我处理在页面上跟踪html属性的代码,以进行一些操作。
这是第一次工作,因为我在
中插入了这个功能document.addEventListener('DOMContentLoaded', function() {
console.log(document.querySelectorAll('*[myid]')[0]);
});
但是该函数必须在每种类型的站点中工作,并且当我在Angular站点上测试时,位置哈希更改而不在此事件中重新加载。
所以我尝试创建一个hashchange事件(https://developer.mozilla.org/en-US/docs/Web/Events/hashchange),但它不是很有效。
我没有找到一个很好的方法来做到这一点,无论客户使用什么框架,每次哈希更改时如何启动事件?
度过愉快的一天,感谢您的时间/帮助
PS: 我用这个:
var location = window.location,
oldURL = location.href,
oldHash = location.hash;
setInterval(function() {
var newURL = location.href,
newHash = location.hash;
if (newHash != oldHash && typeof window.onhashchange === "function") {
window.onhashchange({
type: "hashchange",
oldURL: oldURL,
newURL: newURL
});
oldURL = newURL;
oldHash = newHash;
}
}, 100);
这里的条件:
if ( "onhashchange" in window.document.body )
返回true,但是当我这样做时:
window.onhashchange = function() { console.log('hash change'); };
如果我不使用setInterval,它就无法工作...