window.location.hash,IE,Back and Forward:地址栏中的值更改,但不在DOM中更改
window.location.hash, IE, Back and Forward: value changes in address bar but not in DOM?
尝试通过此示例javascript代码检测后退按钮事件:
document.location.hash="#1";
document.location.hash="#2";
document.location.hash="#3";
function check() {
if("#3"!=window.location.hash) {
alert("Back button clicked");
}
setTimeout(check, 100);
}
check();
在FF和Chrome中它可以工作,在IE window.location.hash中始终是"#3",即使我单击"后退"按钮并观察地址栏中的URL如何更改#2,#1。
有什么方法可以让IE在按前后移动后看到哈希的变化?
我假设您正在通过用户或定时事件动态更改哈希。
你不需要使用 setTimeout 来检查哈希,因为有一个 window.onhashchange 事件可以用来触发你的代码。
window.onhashchange = function(e) {
alert('Back button clicked');
}
每次哈希更改时,无论是通过使用后退/前进历史记录按钮还是使用代码更改哈希时,都会触发此代码。 如果您不希望在使用代码更改哈希时触发代码,则可以使用 if 语句,以便它仅适用于后退/向前历史记录导航,如以下示例所示:https://stackoverflow.com/a/11545805/1534818
或
您可以使用 window.onhashchange 根据哈希执行所有代码,只需使用 onclick 事件更改哈希即可确保您的代码仅执行一次。
.html:
<a href='#1' class='nav'>1<a/>
<a href='#2' class='nav'>2<a/>
<a href='#3' class='nav'>3<a/>
JavaScript/jquery:
/*$('.nav').click(function() { //do this if you aren't
window.location.hash = '#' + $(this).html(); //changing the hash in your html
});*/
function getLocationHash() {
return window.location.hash.substring(1);
}
window.onhashchange = function(e) {
switch(getLocationHash()) {
case '1':
execute code block 1;
break;
case '2':
execute code block 2;
break;
case '3':
execute code block 3;
break;
default:
code to be executed if different from case 1, 2, and 3;
}
}
我在我的网站上做了一些模拟的事情:http://www.designhandler.com
相关文章:
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 地址栏中url的缩短
- XSS通过地址栏注入
- 当地址栏出现时,安卓系统上的css固定页脚被隐藏
- 当移动地址栏出现/消失时,防止更改窗口高度
- 是否可以更改更改特定事件在地址栏或浏览器中的URL
- 自动隐藏地址栏问题
- Firefox for Android - 地址栏内容重叠.有没有解决方案
- 如何在地址栏中的URL更改Firefox JPM时获得通知
- 如何在不重定向用户的情况下更改地址栏URL(不使用历史API?)
- 如何在刷新浏览器地址栏时重置css(a:visited{color:green})
- 我可以在浏览器地址栏上获取#值吗
- 当用户向下滚动我的网页时,如何删除chrome地址栏周围的边框
- 为什么不't我的$location.path('test')更改地址栏
- 是否可以阻止用户使用地址栏提交表单
- 如何在地址栏中隐藏我的页面名称和扩展名
- 在浏览器地址栏中用Javascript代码填写表单
- 使用表单动态更改地址栏中的URL第2部分
- 使用 javascript/jquery 点击 DOM 元素后更改地址栏中的 URL
- window.location.hash,IE,Back and Forward:地址栏中的值更改,但不在DOM中更改