我知道这是一个奇怪的主题。
我只想在页面(不是我的代码)改变它的情况下更改document.title
。
所以我有观察者观看标题:
var target = document.querySelector('head > title');
var observer = new window.WebKitMutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// console.log('new title:', mutation.target.textContent);
// Here call my function to replace the title with mine
// But don't call that function if the title has been changed by me
});
});
observer.observe(target, { subtree: true, characterData: true, childList: true });
然后我可以看到每个新值。问题是当标题是新标题时,我想用我的自定义值替换它。我不知道如何避免无限循环。
考虑这个过程:
答案 0 :(得分:1)
如果我理解您的问题,您的网页标题有两种状态:
解决方案是存储该状态并在观察者中使用它。 对于istance,您可以使用全局变量:
var changedByMe = false;
var observer = new window.WebKitMutationObserver(function(mutations) {
if (changedByMe) {
changedByMe = false;
} else {
mutations.forEach(function(mutation) {
// your code
changedByMe = false;
});
}
});