我正在制作一个简单的 Chrome 扩展程序,以将 YouTube 播放列表中每个视频的长度相加,并将总长度插入页面中。我已经成功了,但是我的脚本仅在刷新页面后才有效,而在浏览网站时无效。不过这不是很方便。
是否可以在 YouTube 上检测页面导航并将 HTML 插入到页面中,然后再将其呈现在浏览器中,以便立即显示添加的内容而不会出现任何延迟并且不需要刷新页面?
示例链接:https : //www.youtube.com/playlist?list=PL_8APVyhfhpdgMJ3J80YQxWBMUhbwXw8B
PS我的问题与在greasemonkey脚本中显示(而不是页面完全加载后)后立即修改元素不同?因为我已经尝试过 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});