这是我的background.js中的代码:
chrome.webNavigation.onCompleted.addListener(function(o) {
chrome.tabs.executeScript(o.tabId, {
file: "test.js"
});
}, {
url: [
{hostContains: 'google.com'}
]
});
我现在想要的是调用test.js的if语句。像这样:
如果a == b然后执行'file:'行test.js“' 否则什么都不做
我尝试了这个,但它不起作用:
chrome.webNavigation.onCompleted.addListener(function(o) {
chrome.tabs.executeScript(o.tabId, {
if (a == b) {
file: "test.js"
}
});
}
任何人都知道我做错了什么?谢谢!
答案 0 :(得分:2)
您不能在对象文字中使用if
语句。这根本就不是有效的语法。一种可能的解决方案是根据条件传递不同的对象:
chrome.webNavigation.onCompleted.addListener(function(o) {
chrome.tabs.executeScript(o.tabId, (a == b) ? { file: "test.js"} : {});
}
答案 1 :(得分:0)
executeScript函数的第二个参数采用InjectDetails https://developer.chrome.com/extensions/tabs#type-InjectDetails对象,你不能在那里放一个if语句。
您可以让if语句返回一个对象文字,例如
chrome.webNavigation.onCompleted.addListener(function(o) {
chrome.tabs.executeScript(o.tabId,
if (a == b) return {
file: "test.js"
}
);
}