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 的情况下完成:查看“jQuery BBQ:后退按钮和查询库”

更新:

好的,所以我们在这里看到的是跨浏览器的 iframe 中 history.go 的不一致行为。Firefox3 似乎完全符合您的要求,而 Chromium 却没有。您可以做的是为您的“后退”链接提供一个 ID

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

然后,在加载 iframe-content 后,获取链接:

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 回答