gpt4 book ai didi

javascript - 在 JavaScript 中无限期地运行 setTimeout 作为事件处理程序

转载 作者:行者123 更新时间:2023-11-30 13:33:08 25 4
gpt4 key购买 nike

我构建了一个完全依赖于 JavaScript 的页面。每当用户单击链接或按钮时,它都会更改 URL 的哈希值 (#doSomething)。

我设置了一个函数,每 200 毫秒检查一次哈希值是否有变化,换句话说,一个自定义事件处理程序,并根据该值运行一些代码。现在看起来还不错,因为我仍在开发过程中,而且我的页面很轻。

我的问题是让脚本无限期地运行检查这个值是否可以?或者当页面有更多内容和东西时会影响性能?

有没有更好的方法来设置脚本来检测 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

}
}

最佳答案

如果它每 1000 毫秒检查一次(我通常在 100 运行我的),那应该不是问题,但考虑使用 native 事件处理程序 ( hashchange )如果存在...

if ('onhashchange' in window) {
addEvent(window, 'hashchange', hashChanged);
} else {
// Poll like normal.
}

这将使您不必在支持此事件的现代浏览器中进行轮询。

关于javascript - 在 JavaScript 中无限期地运行 setTimeout 作为事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5958059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com