WebKitMutationObserver无法观察<link />标记

时间:2016-02-25 13:00:59

标签: mutation-observers

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);

这是小提琴:https://jsfiddle.net/qkw5585h/

0 个答案:

没有答案