【发布时间】:2016-03-08 18:06:17
【问题描述】:
我正在制作一个简单的 Chrome 扩展程序,以将 YouTube 播放列表中每个视频的长度相加,并将总长度插入页面中。我已经成功了,但是我的脚本仅在刷新页面后才有效,但在网站导航时无效。不过这样不太方便。
是否可以在 YouTube 上检测页面导航并将 HTML 插入到页面中,然后再将其呈现在浏览器中,以便添加的内容立即显示,不会有任何延迟,并且不需要刷新页面?
示例链接:https://www.youtube.com/playlist?list=PL_8APVyhfhpdgMJ3J80YQxWBMUhbwXw8B
附:我的问题与Modify elements immediately after they are displayed (not after page completely loads) in greasemonkey script? 不同,因为我已经尝试过 MutationObserver 并且问题是相同的 - 需要刷新以显示对网页的更改:
var observer = new MutationObserver(function(mutations) {
for (var i=0; i<mutations.length; i++) {
var mutationAddedNodes = mutations[i].addedNodes;
for (var j=0; j<mutationAddedNodes.length; j++) {
var node = mutationAddedNodes[j];
if (node.classList && node.classList.contains("timestamp")) {
var videoLength = node.firstElementChild.innerText;
observer.disconnect();
var lengthNode = document.createElement("li");
var lengthNodeText = document.createTextNode(videoLength);
lengthNode.appendChild(lengthNodeText);
document.getElementsByClassName("pl-header-details")[0].appendChild(lengthNode);
return;
}
}
}
});
observer.observe(document, {childList: true, subtree: true});
【问题讨论】:
-
嗯,我试过了,但它不适合我的目的。我要插入组合视频长度的页面部分在加载每个视频的时间戳时已经加载,所以我有同样的问题,需要刷新页面以显示注入的 HTML。更新了我的问题,因为它被标记为重复。
-
刚刚试过了,不,没有解决。仍然需要刷新。
-
感谢您到目前为止提供的帮助。这是脚本,底部还有清单:pastie.org/private/yyc7piosnsna4yq7oymia
标签: javascript google-chrome google-chrome-extension