ホームページ  >  記事  >  ウェブフロントエンド  >  Web ページの履歴を消去し、「戻る」ボタンをブロックします!_JavaScript のヒント

Web ページの履歴を消去し、「戻る」ボタンをブロックします!_JavaScript のヒント

WBOY
WBOYオリジナル
2016-05-16 18:57:152012ブラウズ

この記事では、インターネット上で見つかるブラウザの戻るボタンを無効にするさまざまな解決策を紹介し、それぞれの利点、欠点、および適用可能な場面を分析します。
1. 概要
「ブラウザの戻るボタンを無効にするにはどうすればよいですか?」または「ユーザーが以前にアクセスしたページに戻るのを防ぐにはどうすればよいですか?」という質問が寄せられています。この質問は、ASP フォーラムで最もよく寄せられる質問の 1 つでもあります。残念ながら、答えは非常に簡単です。ブラウザの戻る
ボタンを無効にすることはできません。
最初は、ブラウザの「戻る」ボタンを無効にしたい人がいるとは信じられませんでした。その後、非常に多くの人が戻るボタン
を無効にしたいと考えていることを知り、安心しました (無効にしたいのは戻るボタンだけであり、ブラウザの進むボタンではありませんでした)。デフォルトでは、フォームを送信した後、ユーザーは (「編集」ボタンを使用する代わりに)
戻るボタンを使用してフォーム ページに戻り、フォームを編集して再度送信し、新しいレコードをデータベース。これは私たちが
見たくないものです。
そこで私は、この状況を回避する方法を見つけることにしました。私は多くの Web サイトにアクセスし、それらの Web サイトで紹介されているさまざまな実装方法を参考にしました。
ASP プログラミング Web サイトに頻繁にアクセスする場合は、この記事で紹介されているコンテンツの一部を見たことがあるかもしれません。この記事の目的は、考えられるすべての方法を皆さんに紹介し、
最適な方法を見つけることです。
2. キャッシュを無効にする
私が見つけた多くの解決策のうちの 1 つは、ページ キャッシュを無効にすることを提案しました。具体的には、次のようにサーバー側スクリプトを使用します:


コードをコピーします コードは次のとおりです:
< ;%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "キャッシュなし"
% >


この方法はとても効果的です!これにより、ブラウザはキャッシュからページを読み取るのではなく、サーバーに再アクセスしてページをダウンロードするようになります。この方法を使用する場合、プログラマーの主なタスクは、「戻る」ボタンによるアクセスに適していないページをユーザーが引き続き表示できるかどうかを決定するセッション レベルの変数を作成することです。ブラウザー
はこのページをキャッシュしなくなったため、ユーザーが戻るボタンをクリックするとブラウザーはページを再ダウンロードし、プログラムはそのセッション変数をチェックして、ユーザーが
を開くことを許可する必要があるかどうかを確認できます。ページ。
たとえば、次の形式があるとします。



コードをコピー コードは次のとおりです:< ;%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "キャッシュなし"
If Len(Session( "FirstTimeToPage")) > 0 then
&single; ユーザーは現在のページにアクセスしており、再度アクセスしようとしています。
&single; セッション変数をクリアし、ユーザーをログイン ページにリダイレクトします。
Session("FirstTimeToPage") = ""
Response.Redirect "/Bar.asp"
Response.End
End If
&single; プログラムがここで実行される場合、それはユーザーは現在のページを表示できます
&single; 以下はフォームの作成を開始します

< /form>


セッション変数 FirstTimeToPage を使用して、ユーザーが現在のページに初めてアクセスしたかどうかを確認します。初めてではない場合 (つまり、セッション
("FirstTimeToPage") に特定の値が含まれている場合)、セッション変数の値をクリアし、ユーザーをスタート ページにリダイレクトします。このように、フォーム
が送信されるとき (SompePage.asp が開かれるとき)、FirstTimeToPage に値を与える必要があります。つまり、SomePage.asp に次の
コードを追加する必要があります。
Session("FirstTimeToPage") = "NO"
このようにして、SomePage.asp を開いたユーザーが戻るをクリックした場合、サーバーは、Session
("FirstTimeToPage") に値が含まれていることを確認するため、Session("FirstTimeToPage") をクリアし、ユーザーを他のページにリダイレクトします。もちろん、
これらすべてを行うには、ユーザーが Cookie を有効にする必要があります。有効にしないと、セッション変数が無効になります。 (この問題の詳細については、「セッション変数
が機能するには、Web 訪問者は Cookie を有効にする必要がありますか?」を参照してください。)
さらに、クライアント側のコードを使用して、ブラウザが Web ページをキャッシュしないようにすることもできます。




コードをコピー
コードは次のとおりです:



Control" CONTENT="no-cache">



上記の方法を使用してブラウザーに Web ページのキャッシュを強制的に行わないようにする場合は、次の点に注意する必要があります:
「Pragma: no-cache」は、安全な接続を使用している場合にのみ、ブラウザーがページをキャッシュしないようにします。セキュリティで保護されていないページの場合、「Pragma: no-cache」
は「Expires: -1」と同じように扱われますが、この時点でもブラウザーはページをキャッシュしますが、ページに即時に期限切れとしてマークを付けます。
IE 4 または 5 では、「Cache-Control」META HTTP-EQUIV タグは無視され、効果がありません。
実際のアプリケーションでは、これらすべてのコードを追加できます。ただし、この方法はすべてのブラウザで機能するわけではないため、お勧めできません。しかし、
イントラネット環境で、ユーザーが使用するブラウザを管理者が制御できる場合は、依然としてこの方法を使用する人もいると思います。

3. その他の方法
次に説明する方法は、ブラウザのキャッシュではなく、戻るボタン自体を中心に説明します。
参照する価値のある「戻るボタンの再配線」という記事があります。ただし、この方法を使用すると、ユーザーは [戻る] ボタンをクリックしたときに以前にデータを入力したページは表示されませんが、
を 2 回クリックするだけで済みます。これは私たちが望む効果ではないことに気付きました。多くの場合、頑固なユーザーは予防措置を回避する方法を見つけることができます。
戻るボタンを無効にするもう 1 つの方法は、クライアント側 JavaScript を使用してツールバーなしでウィンドウを開くことです。これにより、ユーザーは前のページに戻ることが困難になりますが、
不可能ではありません。より安全ですが、やや面倒な方法は、フォームの送信時に新しいウィンドウを開き、同時にフォームが配置されているウィンドウを閉じることです。しかし、
この方法は真剣に検討する価値がないと感じています。ユーザーがフォームを送信するたびに新しいウィンドウを開かせるわけにはいかないからです。
では、ユーザーに戻ってほしくないページに JavaScript コードを追加できますか?このページに追加された JavaScript コード
を使用して、「進む」ボタンをクリックした効果を生成し、ユーザーが「戻る」ボタンをクリックしたことによって引き起こされるアクションを無効にすることができます。この関数の実装に使用される JavaScript コードは次のとおりです
:

コードをコピーします コードは次のとおりです:
<スクリプト言語="JavaScript">
<--
javascript:window.history.forward(1);
>


繰り返しますが、この方法は機能しますが、「最良の方法」とは程遠いです。その後、ある
ページから別のページに移動するために location.replace を使用することを提案している人を見かけました。この方法の原理は、現在の履歴レコードを新しいページの URL に置き換えることです。これにより、閲覧履歴には 1 ページだけが残り、
戻るボタンは決して使用できなくなります。おそらくこれは多くの人が求めているものだと思いますが、それでもすべての状況において最善のアプローチであるとは限りません。この
メソッドの使用例は次のとおりです:

このページへのリンクを無効にする

このリンクを試してください:
このページへのリンクを無効にしてください。
このアプローチの欠点は、ユーザーがあるページから別のページに移動するたびに
クライアント コードで location.history をクリアする必要があるため、単に Response.Redirect を使用するだけでは機能しなくなることです。また、このメソッドはすべての
アクセス レコードではなく、最後のアクセス履歴レコードをクリアすることにも注意してください。
上のリンクをクリックすると、単純な HTML ページが開きます。もう一度戻るボタンをクリックすると、このページではなく、このページの前のページ
が開かれていることがわかります。 (もちろん、ブラウザでクライアント側の JavaScript コードを有効にする必要があります。)
慎重に検索した結果、ブラウザの「戻る」ボタンを完全に無効にする方法がまだ見つからないことがわかりました。ここで説明するすべてのメソッド
は、さまざまな程度およびさまざまな方法でユーザーが前のページに戻るのを防ぐことができますが、それぞれに独自の制限があります。 [戻る] ボタン
を完全に無効にする方法はないため、最善の解決策は、クライアント側スクリプトとサーバー側スクリプトを組み合わせて使用​​することです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。