gpt4 book ai didi

javascript - chrome.webNavigation.onCompleted 在完成之前触发?

转载 作者:行者123 更新时间:2023-12-03 06:19:58 37 4
gpt4 key购买 nike

我正在尝试为自己构建一个浏览器扩展。这个想法是,当我单击插件的图标时,它会打开一个页面。然后我想在新页面加载完成后执行一些代码,但不知何故它不起作用。

var result;

chrome.browserAction.onClicked.addListener(function() {
chrome.history.search(
{ text: "", maxResults: 100}, //object
function(results) { //callback
for(var item in results) {
var currItem = results[item];
if (currItem.url.indexOf("some_domain") > -1) {
result = results[item];
break;
}
}

//Go to website
chrome.tabs.create({
'url': result.url
}, function(tab) {
new_tabId = tab.id;
});
}
);
});

现在是失败的部分:

chrome.webNavigation.onCompleted.addListener(function(details) {
// if (check for correct URL here) {
var videos = document.getElementsByTagName("video");
var video = videos[0];
alert(videos.length); <--- always Zero! Why??
video.load();
video.play();

video.addEventListener("ended", function() { ... });
// }
});

它们都在同一个后台脚本中,但我没有内容脚本。 list 中的权限为“tabs”、“history”、“webNavigation”

当我检查开发人员控制台并执行以下操作时:document.getElementsByTagName("video").length 我确实得到了正确的数字。

最佳答案

正如 wOxxOm 所暗示的那样,阻止您的代码工作的是您尝试从 background script 访问 DOM 。具体来说,代码:

var videos = document.getElementsByTagName("video");
var video = videos[0];
alert(videos.length); <--- always Zero! Why??
video.load();
video.play();

video.addEventListener("ended", function() { ... });

不会在后台脚本中运行。如果您想执行此操作,则需要加载/执行内容脚本。

关于javascript - chrome.webNavigation.onCompleted 在完成之前触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38921365/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com