我构建一个完全依赖于Javascript的页面。 每当用户点击链接或按钮时,它都会更改网址的哈希值(#doSomething)。
我已经设置了一个函数,每200ms检查一次哈希值以进行更改,换句话说就是自定义事件处理程序,并根据值来运行somecode。现在它看起来很好,因为我还处于开发过程中,而且我的页面非常清晰。
这是我的问题,是否可以无限期地运行脚本来检查此值?或者当页面有更多内容和要处理的内容时会影响性能?
有没有更好的方法来设置脚本来检测url哈希的更改?
这是我的剧本:
var currenthash = (window.location.hash)?window.location.hash: '';
addEvent(window,'load',function () {
if (currenthash != ''){
hashChanged();
}
var timeInterval = setInterval(function () {
if (window.location.hash != currenthash) {
hashChanged();
currenthash = window.location.hash;
}
},1000);
});
var hashChanged = function (str) {
var id = window.location.hash.replace("#",'');
var selected = $id(id);
// do some more stuff
}
}
答案 0 :(得分:2)
如果检查每1000
毫秒(我通常在100
处运行),它应该不是问题,但考虑使用本机事件处理程序(hashchange
)存在...
if ('onhashchange' in window) {
addEvent(window, 'hashchange', hashChanged);
} else {
// Poll like normal.
}
这将节省您在支持此事件的现代浏览器中进行轮询。
答案 1 :(得分:1)
如果散列仅在点击上发生变化,为什么不在文档上单击监听器,根本不需要setInterval或setTimeout,只有在需要时才运行。
答案 2 :(得分:0)
只要间隔时间不短,就没有问题。