TLDR:为什么没有触发观察者?
我试图捕捉favicon的变化。让我们看看我的观察者:
var observer = new window.WebKitMutationObserver(function (mutations) {
console.log(mutations);
});
// All config as `true` in case of...
observer.observe(document.querySelector('head link[rel*="icon"]'), {
attributes: true,
childList : true,
characterData: true,
subtree: true,
attributeOldValue: true,
characterDataOldValue: true
});
没有console.log()
被触发,观察者不喜欢head link[rel*="icon"]
选择器,即使这个选择器是正确的。如果我将head
设置为选择器,它可以工作,但我怎么知道哪个节点已更新?
这是我的额外代码,可以开箱即用来测试这种行为:
function changeIcon (url) {
document.querySelectorAll('head link[rel*="icon"]')[0].href = url;
}
setTimeout(function () {
changeIcon('https://www.google.fr/images/branding/product/ico/googleg_lodp.ico');
}, 1000);
setTimeout(function () {
changeIcon('https://s.ytimg.com/yts/img/favicon_96-vfldSA3ca.png');
}, 2000);
setTimeout(function () {
changeIcon('https://abs.twimg.com/favicons/favicon.ico');
}, 3000);