1

重複の可能性:
IE と Firefox で [戻る] ボタンを無効にする方法は?

私はワンページのウェブサイト(DAM)を開発しています。このサイトに入るには、ユーザーを認証する必要があります。ログイン後、ユーザーが [戻る] ボタンをクリックすると、ログイン ページが表示されます。ログイン ページは私の管理下にありません。つまり、Oracle コンテンツ管理システムによって提供されるため、そこにコードを追加することはできません。

戻るボタンを押した場合に同じページに移動するように、ページにどのコードを追加する必要がありますか。

onbeforeunload を使用しようとしましたが、うまくいきましたが、確認メッセージは必要ありません。そのページに留まりたかっただけです。

4

6 に答える 6

4

このように動作するように明示的に設計されているため、これは不可能です。ユーザーが「戻る」を押した場合、ブラウザは前のページに戻る必要があります。信頼できないテクニックがいくつかありますが、最終的にはいずれかの理由ですべて失敗します。

しかし...あなたの場合、ダブルリダイレクトを実行して、ログイン直後のランディングページの「bacK」ボタンを処理できると思いますか?

于 2012-07-25T12:21:27.470 に答える
2

使い勝手の良いシングルページアプリの仕組み

ページのユーザー エクスペリエンスと使いやすさを向上させたい場合は、ページ ハッシュ/フラグメントを使用する必要があります。他の人が行ったのと同じ (または類似した) コードを提供するつもりはありませんが、エクスペリエンスをアップグレードします。

では、そのUXはどうでしょうか

単一ページ Web アプリケーションは、作業のコンテキストを変更するたびにハッシュを変更する必要があります。これは、ユーザー インターフェイスまたはユーザーが UI で実行するビジネス プロセスによって定義される場合があります。また、ユーザーが以前のプロセス状態に戻る/戻る必要があると予想される場合は、そのようなプロセスの個々のステップによって定義される場合もあります。

このようにして、アプリケーションは、複数のページで構成される通常の Web アプリケーションと同様に機能し、ビジネス プロセスとその手順に基づいて新しい履歴エントリを作成します (この場合の手順は通常、ページ全体のポストバックです)。

したがって、ビジネス プロセスと、アプリケーションを通常のマルチページ アプリケーションと考えると、ページ フラグメントを変更する可能性がある場合に多くの有用なポイントが得られます。これを制御できるため、複数ページの Web アプリケーションよりも優れた粒度 (通常は小さい) を提供できます。

複数ページのアプリケーション履歴にポイントが多すぎる簡単な例

フォームの投稿は通常常に問題があるため、ユーザーが F5 キーを押して同じフォームを何度も再送信するため、ポストバック応答の後に履歴ポイントを持つことは常に悪いことです (ブラウザーは投稿データの再送信について尋ねますが、それでも悪い経験です)。

ページの断片化は進むべき道です。ログオンページに戻るのを防ぐだけでなく、さらに使用してください。

ログオン ページが履歴スタックに入るのを完全に防ぐには、iframe. もちろん、認証されていないユーザーを検出し、iframe自分自身を追加してログインをロードする必要があります。ユーザーが認証されたら、自分のページをリロードする必要があります。ただし、ログインの成功を検出するプロセスは簡単ではないことに注意してください。

于 2012-07-25T14:25:55.497 に答える
0
window.location.replace(URL);

現在のドキュメントを、指定されたURLのドキュメントに置き換えます。Assign()メソッドとの違いは、replace()を使用した後、現在のページがセッション履歴に保存されないことです。つまり、ユーザーは[戻る]ボタンを使用してそのページに移動できなくなります。

于 2012-07-25T12:25:31.983 に答える
-1
function win_onkeydown_handler()
{
switch (event.keyCode){

case 116 : // 'F5'
event.returnValue = false;
event.keyCode = 0;
alert("Refresh Not Allowed");
break;
case 08 : // 'BS'
if(event.srcElement.tagName=="INPUT" || event.srcElement.tagName=="DIV")
{
}
else{
event.returnValue = false;
event.keyCode = 0;
//alert("Backspace Not Allowed");
}
break;
case 17 : // ctrl key   
 event.returnValue = false;
 event.keyCode = 0;
 alert('Control Key restricted');
 }
 }

私も自分のプロジェクトでこれを取得しましたが、上記のスクリプトを使用してそのページでこれをブロックしていました...バックスペースをブロックする必要がある場合は、そのコードだけを使用できます

于 2012-07-25T13:41:20.790 に答える
-2

クライアントブラウザを制御することは許可されていません。セキュリティ上の問題により、スクリプトはクライアントブラウザを制御できません。

于 2012-07-25T12:22:58.643 に答える
-3

これを試してください、それはあなたの問題を解決します:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="button" value="Back" onclick="history.go(0);return true;" />
</body>
</html>

乾杯!!!!

于 2012-07-25T13:58:37.297 に答える