Javascript 在my chrome扩展的其他选项卡中注入脚本时出错
这是我第一次尝试构建chrome扩展。 我举了第一个例子,并根据我的需要将其主题化 我想建立一个chrome扩展,可以控制不同标签上的youtube播放器 从弹出菜单中 首先,我想显示所有打开的youtube选项卡的列表。这个很好用。 之后,我想在每个选项卡中插入一个脚本 这就是问题所在: 开发人员控制台给了我以下错误Javascript 在my chrome扩展的其他选项卡中注入脚本时出错,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,这是我第一次尝试构建chrome扩展。 我举了第一个例子,并根据我的需要将其主题化 我想建立一个chrome扩展,可以控制不同标签上的youtube播放器 从弹出菜单中 首先,我想显示所有打开的youtube选项卡的列表。这个很好用。 之后,我想在每个选项卡中插入一个脚本 这就是问题所在: 开发人员控制台给了我以下错误 Error during tabs.executeScript: Unknown error. sendRequest:22 chromeHidden.hand
Error during tabs.executeScript: Unknown error. sendRequest:22
chromeHidden.handleResponse sendRequest:22
Callback worked
我的manifest.json如下所示
{
"manifest_version": 2,
"name": "YoutubeMusicControl",
"description": "First Try",
"version": "1.0",
"permissions": [
"tabs",
"http://*/",
"https://*/"
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
}
}
除了运行脚本外,popup.html没有任何特殊功能
这是有趣的部分
var TabControl = {
listCurrentTabs : function(){
var name = "";
var div;
chrome.tabs.query({}, function(tabs){
for(var i = 0; i < tabs.length; i++){
var found = tabs[i].url.search(/.*youtube.*/);
if(found != -1){
div = document.createElement('div');
name = tabs[i].title;
div.className = "entry";
div.innerHTML = name;
document.body.appendChild(div);
chrome.tabs.executeScript(i,{
code:"alert('test');"
},function(results){console.log("Callback worked")});
}
}
});
}
}
document.addEventListener('DOMContentLoaded', function () {
TabControl.listCurrentTabs();
});
var TabControl={
listCurrentTabs:函数(){
var name=“”;
var-div;
chrome.tabs.query({},函数(tabs){
对于(变量i=0;i
如果我将参数i更改为null(当前选项卡),则一切正常。
看起来好像我没有权限或者参数有问题,
但是我不能让代码工作
有人知道为什么代码不起作用吗
提前感谢您的答案在
executeScript
的参数中。如果您没有指定一个tabID
,它默认为您当前的活动选项卡(这是当您将其输入null
时发生的情况)
但是,当您输入该可选整数时,您需要知道该整数不是tablist中选项卡的索引,而是它的实际ID(在您的情况下,可以使用tab[i].ID
)
使用选项卡的唯一ID将使代码正常工作。只需将
executeScript(i
更改为executeScript(tabs[i].id
您的答案就在于executeScript
的参数。如果您不指定tabID
,它将默认为当前活动的选项卡(这是当您输入null
时发生的情况)
但是,当您输入该可选整数时,您需要知道该整数不是tablist中选项卡的索引,而是它的实际ID(在您的情况下,可以使用tab[i].ID
)
使用选项卡的唯一ID将使您的代码正常工作。只需将
executeScript(i
更改为executeScript(选项卡[i]。ID
谢谢,这就是问题所在。:)可以很容易…祝您度过愉快的一天!谢谢,这就是问题所在。:)可以很容易…祝您度过愉快的一天!