原生javascript检测所有类型的页面更改

时间:2014-10-09 09:30:12

标签: javascript hashchange

我处理在页面上跟踪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,它就无法工作...

0 个答案:

没有答案