我的 background.js 中出现 "No matching signature" 错误
I get "No matching signature" error in my background.js
我收到错误“未捕获类型错误:调用 scripting.executeScript(scripting.ScriptInjection 注入时出错,可选函数回调:没有匹配的签名。”在我的控制台中。
我不知道出了什么问题,请有人帮助我,我真的很感激。
这里是 background.js 代码:
var Tabclicked = false;
disableBrowserAction();
function disableBrowserAction(tabId) {
chrome.scripting.executeScript(tabId, { file: 'jquery.js' }, function() {
chrome.scripting.executeScript(tabId, { file: 'CloseRuler.js' });
});
}
function enableBrowserAction(tabId) {
chrome.scripting.executeScript(tabId, { file: 'jquery.js' }, function() {
chrome.scripting.executeScript(tabId, { files: 'Ruler.js' });
});
}
function updateState() {
if (Tabclicked == false) {
Tabclicked = true;
enableBrowserAction();
} else {
Tabclicked = false;
disableBrowserAction();
}
}
//chrome.pageAction.onClicked.addListener(updateState);
chrome.action.onClicked.addListener(function(tabId) {
updateState(tabId);
alert('File test alert');
});
alert('File test alert');
这是我的清单:
{
"name": "Physics Ruler",
"description": "Position the ruler and measure the objects!",
"version": "1.0",
"manifest_version": 3,
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "background.js",
"type": "module"
},
"action": {
"default_icon": "icon.png",
"default_title": "Ruler",
"name": "Physics Ruler"
},
"content_scripts": [{
"js": ["jquery.js"],
"matches": ["*://*/*"]
}],
"host_permissions": [
"*://*/*"
]
}
所以,我找到了答案,文档有点帮不上忙,我只是尝试了不同的方法直到它起作用。
我们必须使用 chrome 个选项卡实现此功能:
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
在该函数中,我们可以使用“tabs[0].id”来获取 id。
例如:
function enableBrowserAction(tabId) {
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, files: ['jquery.js'] }, function() {
chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, files: ['Ruler.js'] });
});
});
}
我收到错误“未捕获类型错误:调用 scripting.executeScript(scripting.ScriptInjection 注入时出错,可选函数回调:没有匹配的签名。”在我的控制台中。 我不知道出了什么问题,请有人帮助我,我真的很感激。
这里是 background.js 代码:
var Tabclicked = false;
disableBrowserAction();
function disableBrowserAction(tabId) {
chrome.scripting.executeScript(tabId, { file: 'jquery.js' }, function() {
chrome.scripting.executeScript(tabId, { file: 'CloseRuler.js' });
});
}
function enableBrowserAction(tabId) {
chrome.scripting.executeScript(tabId, { file: 'jquery.js' }, function() {
chrome.scripting.executeScript(tabId, { files: 'Ruler.js' });
});
}
function updateState() {
if (Tabclicked == false) {
Tabclicked = true;
enableBrowserAction();
} else {
Tabclicked = false;
disableBrowserAction();
}
}
//chrome.pageAction.onClicked.addListener(updateState);
chrome.action.onClicked.addListener(function(tabId) {
updateState(tabId);
alert('File test alert');
});
alert('File test alert');
这是我的清单:
{
"name": "Physics Ruler",
"description": "Position the ruler and measure the objects!",
"version": "1.0",
"manifest_version": 3,
"permissions": [
"activeTab",
"scripting"
],
"background": {
"service_worker": "background.js",
"type": "module"
},
"action": {
"default_icon": "icon.png",
"default_title": "Ruler",
"name": "Physics Ruler"
},
"content_scripts": [{
"js": ["jquery.js"],
"matches": ["*://*/*"]
}],
"host_permissions": [
"*://*/*"
]
}
所以,我找到了答案,文档有点帮不上忙,我只是尝试了不同的方法直到它起作用。
我们必须使用 chrome 个选项卡实现此功能:
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
在该函数中,我们可以使用“tabs[0].id”来获取 id。
例如:
function enableBrowserAction(tabId) {
chrome.tabs.query({ currentWindow: true, active: true }, function(tabs) {
chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, files: ['jquery.js'] }, function() {
chrome.scripting.executeScript({ target: { tabId: tabs[0].id }, files: ['Ruler.js'] });
});
});
}