【发布时间】:2016-09-05 20:40:34
【问题描述】:
我有this script。它适用于RottenTomatoes电影页面,并修改了3个元素
(工具提示内有 1 个可见文本和 2 个文本)。
目前,(由于greasemonkey 的@run-at document-end)它仅在页面完全加载后修改元素。
此外,RottenTomates 页面有很多次延迟加载,最多 20 秒(!),
所以这对我的脚本造成了额外的延迟。
这会导致两件事:
- 显示修改后的可见文本的延迟,以及,
- 如果您在页面完全加载之前将鼠标悬停在任一工具提示中,那么在加载之后,它可能只包含初始文本而没有我的添加,或者仅包含我的添加。
要查看此内容,请安装 script,然后访问 this typical target page。
RottenTomatoes 页面通过 XHR 加载各种内容(正如我在 Firefox Network Monitor 中看到的那样),
但是 3 个元素(我想修改)立即显示,而不是在页面完全加载时显示。
我曾尝试使用MutationObserver 来观察屏幕上出现的特定文本值,但它似乎不起作用。它的结构是这样的:
var target = selector_for_element_containing_text ; // the selector is: document.querySelector('.audience-info > div:nth-child(1)');
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
modifyElements();
});
});
var config = { attributes: true, childList: true, characterData: true, subtree: true };
observer.observe(target, config);
function modifyElements(){ // This is just the current code of my script
// modify element 1
// modify element 2
// modify element 3
}
如何在元素显示后立即对其进行修改?
【问题讨论】:
标签: javascript html xmlhttprequest greasemonkey