我使用Ajax和哈希导航。
有没有办法检查window。location。hash是否像这样改变了?
http://example.com/blah#123至http://example.com/blah#456
如果我在文件加载时检查它,它就会工作。
但如果我有#哈希导航,它不工作时,我按浏览器上的后退按钮(所以我从blah#456跳转到blah#123)。
它显示在地址框内,但我无法用JavaScript捕获它。
我使用Ajax和哈希导航。
有没有办法检查window。location。hash是否像这样改变了?
http://example.com/blah#123至http://example.com/blah#456
如果我在文件加载时检查它,它就会工作。
但如果我有#哈希导航,它不工作时,我按浏览器上的后退按钮(所以我从blah#456跳转到blah#123)。
它显示在地址框内,但我无法用JavaScript捕获它。
当前回答
简单的例子 单击按钮更改散列
窗口。onhashchange = () => console.log('散列更改-> ${window.location.hash} ') <按钮onclick = " window.location.hash = math . random ()“>哈希到数学。随机> < /按钮 <按钮onclick = " window.location。>哈希到ABC</button> . <按钮onclick = " window.location。hash='XYZ'"> hash到XYZ</button> .
其他回答
你可以很容易地在window的“hash”属性上实现一个观察者(“watch”方法)。位置”对象。
Firefox有自己的实现来监视对象的变化,但如果您使用其他实现(例如在JavaScript中监视对象属性的变化)—对于其他浏览器,这将达到目的。
代码如下所示:
window.location.watch(
'hash',
function(id,oldVal,newVal){
console.log("the window's hash value has changed from "+oldval+" to "+newVal);
}
);
然后你可以测试它:
var myHashLink = "home";
window.location = window.location + "#" + myHashLink;
当然这会触发你的观察者函数。
简单的例子 单击按钮更改散列
窗口。onhashchange = () => console.log('散列更改-> ${window.location.hash} ') <按钮onclick = " window.location.hash = math . random ()“>哈希到数学。随机> < /按钮 <按钮onclick = " window.location。>哈希到ABC</button> . <按钮onclick = " window.location。hash='XYZ'"> hash到XYZ</button> .
注意,在Internet Explorer 7和Internet Explorer 9的情况下,if语句将返回true(对于“onhashchange”在windows中),但窗口。onhashchange永远不会触发,所以最好存储哈希值,并在每100毫秒后检查它是否为所有版本的Internet Explorer更改。
if (("onhashchange" in window) && !($.browser.msie)) {
window.onhashchange = function () {
alert(window.location.hash);
}
// Or $(window).bind( 'hashchange',function(e) {
// alert(window.location.hash);
// });
}
else {
var prevHash = window.location.hash;
window.setInterval(function () {
if (window.location.hash != prevHash) {
prevHash = window.location.hash;
alert(window.location.hash);
}
}, 100);
}
编辑- 从jQuery 1.9开始,$.browser。不支持Msie。来源:http://api.jquery.com/jquery.browser/
Firefox从3.6开始就有了onhashchange事件。看到window.onhashchange。
var page_url = 'http://www.yoursite.com/'; // full path leading up to hash;
var current_url_w_hash = page_url + window.location.hash; // now you might have something like: http://www.yoursite.com/#123
function TrackHash() {
if (document.location != page_url + current_url_w_hash) {
window.location = document.location;
}
return false;
}
var RunTabs = setInterval(TrackHash, 200);
就是这样……现在,无论何时点击后退或前进按钮,页面都会根据新的哈希值重新加载。