0

モーダル/ライトボックスウィンドウ内のユーザーの履歴を制御するために、JavaScriptの戻るボタンリンクと進むボタンリンクを使用しています。

私が抱えている課題は、モーダルウィンドウが起動され、ユーザーがクリックできるように「戻る」ボタンと「進む」ボタンが表示されることです。ウィンドウが開いたときに最初のjavascriptの戻るボタンをクリックすると、実際にはモーダルウィンドウが閉じます。 javascriptの履歴により、モーダルウィンドウを開く前にユーザーがページに戻るためです。

したがって、本質的には、「戻る」ボタンがモーダル/ライトボックスの初期ロードで機能しないようにしようとしています。

これは可能ですか?これが起こっていることのデモです... http://www.apus.edu/_test/evan/modal/start.htm

<a href="javascript:history.go(-1)">Back Button</a> 
<a href="javascript:history.go(1)">Foward Button</a>
4

2 に答える 2

0

モーダルウィンドウで何をしているのか正確にはわかりませんが、最初に頭に浮かぶのは、関数を記述し、history.go(-1)を条件付きでラップすることです。

function goBackIfAppropriate() {
  if( /* <check goes here> */ ) {
    history.go(-1);
  }
}

とあなたのマークアップで

<a href="javascript:goBackIfAppropriate()">Back Button</a> 

jQueryについて言及せずにこの回答を終わらせないために:「jQueryBBQ:戻るボタンとクエリライブラリ」をチェックしてください。

アップデート:

さて、ここにあるのは、ブラウザ間でiframe内のhistory.goの動作に一貫性がないことです。Firefox3はあなたが望むことを正確に実行しているようですが、Chromiumはそうではありません。あなたができることはあなたの「バック」リンクにIDを提供することです

<a href="javascript:history.go(-1)" id='back_button'>Back</a>

次に、iframeコンテンツが読み込まれた後、次のリンクを取得します。

var iframe = document.getElementsByTagName("iframe")[0];
var link =  iframe.contentDocument.getElementById("back_button");
link.parentNode.removeChild(link);

または(jQueryを使用;)

$("iframe").contents().find("#back_button").remove();

またはあなたがそれで好きなことを何でもします。

于 2010-05-29T16:29:32.247 に答える
0

試すhistory.pushState(null, '', '#stay');

*私が知る限り、これには HTML5 対応のブラウザが必要です。

于 2013-11-12T05:10:42.103 に答える