我有一段JavaScript代码,用于检查URL是否有更改(单页应用程序),然后触发事件。但是,库可以多次实例化,当有多个计时器检查URL更改时,这将是一个问题。我不确定如何在不使用全局变量的情况下解决这个问题。
这是片段。
(function() {
var _oldURL = window.location.href;
setInterval(function() {
var currentURL = window.location.href;
console.log(currentURL);
if (currentURL !== _oldURL) {
console.log('Fire event');
_oldURL = currentURL;
}
}, 1000);
})();
如果我多次运行此代码段,会有更多的计时器检查网址是否发生变化。因此,每次URL更改时,Timer1和Timer2都将触发导致双重事件的事件。我已经通过使用全局变量解决了这个问题,我认为这是最好的解决方案。我不确定是否有其他方法可以解决这个问题?
这就是我所做的。
(function() {
window._oldURL = window.location.href;
setInterval(function() {
var currentURL = window.location.href;
console.log(currentURL);
if (currentURL !== window._oldURL) {
console.log('Fire event');
window._oldURL = currentURL;
}
}, 1000);
})();