Javascript后退按钮 - 停止工作后退按钮的初始加载

时间:2010-05-29 16:22:06

标签: javascript button back

我正在使用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>

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你正在使用模态窗口做什么,但我想到的第一件事就是编写一个函数,并将history.go(-1)包装在条件中

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

和你的标记

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

不要在没有提及jQuery的情况下完成这个答案:查看“jQuery BBQ:Back Button&amp; Query Library”

<强>更新

好的,我们所拥有的here是跨越浏览器的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();

或做任何你喜欢的事情。

答案 1 :(得分:0)

尝试history.pushState(null, '', '#stay');

*据我所知,这需要支持HTML5的浏览器。