Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法捕捉javascript中的后退按钮事件?_Javascript - Fatal编程技术网

有没有办法捕捉javascript中的后退按钮事件?

有没有办法捕捉javascript中的后退按钮事件?,javascript,Javascript,当只有位置散列更改时,javascript中是否有方法响应按下后退按钮(或按下退格键)?也就是说,当浏览器未与服务器通信或未重新加载页面时。onLocationChange也可能有用。虽然不确定这是否是Mozilla独有的功能,但似乎它可能是。使用事件: 如果您需要支持较旧的浏览器,请查看Modernizer的HTML5跨浏览器页面。您看过这个吗 我创建了一个可能对某些人有用的。只需在页面上包含代码,就可以编写自己的函数,单击“后退”按钮时将调用该函数 我已经在IE、FF、Chrome和Safa

当只有位置散列更改时,javascript中是否有方法响应按下后退按钮(或按下退格键)?也就是说,当浏览器未与服务器通信或未重新加载页面时。

onLocationChange
也可能有用。虽然不确定这是否是Mozilla独有的功能,但似乎它可能是。

使用事件:


如果您需要支持较旧的浏览器,请查看Modernizer的HTML5跨浏览器页面。

您看过这个吗

我创建了一个可能对某些人有用的。只需在页面上包含代码,就可以编写自己的函数,单击“后退”按钮时将调用该函数


我已经在IE、FF、Chrome和Safari中进行了测试,并且都在工作。我的解决方案基于iFrame,在IE和FF中不需要不断轮询,但是,由于其他浏览器的限制,在Safari中使用了位置哈希。

我做了一个有趣的hack来解决这个问题,我很满意。我有一个AJAX站点,可以动态加载内容,然后修改window.location.hash,我有代码可以在$(document).ready()上运行,以解析哈希并加载相应的部分。问题是,我对我的导航部分加载代码非常满意,但想添加一种截取浏览器后退和前进按钮的方法,该按钮可以更改窗口位置,但不会干扰我当前的页面加载例程,在该例程中我操作window.location,不可能以固定的时间间隔轮询window.location

我最终做的是创建这样一个对象:

var pageload = {
    ignorehashchange: false,
    loadUrl: function(){
        if (pageload.ignorehashchange == false){
            //code to parse window.location.hash and load content
        };
    }
};
然后,我在我的站点脚本中添加了一行代码,以便在事件发生时运行
pageload.loadUrl
函数,如下所示:

window.addEventListener("hashchange", pageload.loadUrl, false);
然后,每当我想修改
window.location.hash
而不触发此页面加载例程时,我只需在每个
window.location.hash=
行之前添加以下行:

pageload.ignorehashchange = true;
然后在每个哈希修改行之后显示以下行:

setTimeout(function(){pageload.ignorehashchange = false;}, 100);

因此,现在我的节加载例程通常正在运行,但如果用户点击“后退”或“前进”按钮,新位置将被解析并加载相应的节。

签出。有一个HTML5状态更改事件,您可以收听它。

这非常有趣。现在我需要弄清楚它是如何做到这一点的。上面的链接被破坏了,这就是为什么总是总结链接的内容很重要。很高兴看到StackOverflow的答案已经登上了google老问题的热门位置。这对我来说是可行的,但如果代码发生更改,我调用的代码中会出现一些问题,这使得哈希更改行无法执行。一个很好的提示可能是最后一个。在当前的浏览器中,您应该使用onhashchange事件对答案进行改进。这看起来很流畅,并且有一个证明。其他人对此有什么好说的吗?我不知道为什么它对我不起作用,顺便说一句,当我刚加载js文件时,哈希url开始转到prev和next forerver。而不仅仅是提供一个链接并解释你测试过它-如果你能解释它是如何工作的以及为什么你选择这样做的话,那将非常有帮助。
setTimeout(function(){pageload.ignorehashchange = false;}, 100);