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

发布于 2024-09-03 03:01:37 字数 536 浏览 5 评论 0原文

我使用 JavaScript 后退按钮链接和前进按钮链接来控制模式/灯箱窗口内的用户历史记录。

我面临的挑战是,当模式窗口启动时,“后退”和“前进”按钮可供用户单击,如果在窗口打开时单击初始 JavaScript 后退按钮,它实际上会关闭模式窗口,因为 JavaScript 历史记录将用户带回到打开模式窗口之前的页面。

因此,本质上,我试图禁用“后退”按钮来处理模态/灯箱的初始负载。

这可能吗?这是正在发生的事情的演示...... http://www.apus.edu/_test/evan/modal/start。嗯

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

I'm using a javascript back button link and forward button link to control the user's history inside a modal/lightbox window.

The challenge I have is when the modal window is launched, and the "back" and "forward" buttons are present for the user to click, if the initial javascript back button is clicked when the window opens, it actually closes the modal window, because the javascript history is taking the user back to the page PRIOR to the opening of modal window.

So, in essence, I'm trying to disable the "back" button from working on the initial load of the modal/light box.

Is this possible? Here's a demo of what is happening...
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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

反差帅 2024-09-10 03:01:37

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

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

标记中

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

和 为了不让这个答案在没有提及 jQuery 的情况下完成:查看“jQuery BBQ:后退按钮和查询库”

更新:

好的,我们有什么这里是history.go在跨浏览器的iframe中的不一致行为。 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();

或执行您喜欢的任何其他操作。

I'm not exactly sure if I understand what you are doing with modal windows, but the first thing that pops to my mind is to write a function, and wrap the history.go(-1) in a conditional

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

and in your markup

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

Just to not let this answer finish without any mention of jQuery: check out "jQuery BBQ: Back Button & Query Library"

Update:

Okay, so what we have here is an inconsistent behavior of history.go in iframes across browsers. Firefox3 seems to do exactly what you want, Chromium doesn't. What you could do is to provide an id to your "back"-link

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

Then, after your iframe-content is loaded, you grab the link:

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

or (using jQuery ;)

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

or do whatever else you like with it.

夜唯美灬不弃 2024-09-10 03:01:37

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

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

Try history.pushState(null, '', '#stay');

*As far as I know this requires HTML5 capable browser.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文