如果声明不起作用 - chrome扩展

时间:2014-08-30 13:19:31

标签: javascript google-chrome

这是我的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"
        }

   });
 }

任何人都知道我做错了什么?谢谢!

2 个答案:

答案 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"
     }
   );
}