我构建了一个完全依赖JavaScript的页面,每当用户点击链接或按钮时,它就会改变URL的哈希值(#doSomething
)。
我已经设置了一个函数,每200ms检查一次哈希值的变化,换句话说,一个自定义的事件处理程序,并根据值运行一些代码。现在看起来很好,因为我还在开发过程中,我的页面很轻。
我的问题是,让一个脚本无限期地运行检查这个值是否可以?或者当页面有更多的内容和东西要处理时,是否会影响性能?
是否有更好的方法来设置脚本以检测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
}
}
3条答案
按热度按时间vsikbqxv1#
如果它每隔
1000
毫秒检查一次(我通常在100
运行我的),这应该不是问题,但是如果存在的话,请考虑使用本机事件处理程序(hashchange
)...这将保存您必须在支持此事件的现代浏览器中进行投票。
jrcvhitl2#
如果散列只在点击时改变,为什么不在文档上设置点击监听器,根本不需要setInterval或setTimeout,并且函数只在需要时运行。
nlejzf6q3#
只要间隔时间不是太短,就没有问题。