2014-08-30 81 views
0

这是我的代码从我background.js:如果语句不工作 - 浏览器扩展程序

chrome.webNavigation.onCompleted.addListener(function(o) { 
    chrome.tabs.executeScript(o.tabId, { 
     file: "test.js" 
    }); 
}, { 
    url: [ 
    {hostContains: 'google.com'} 
    ] 
}); 

我现在想要的是一个if语句的权利,其中test.js被调用。事情是这样的:

如果== B,则执行该行“文件:‘test.js’” 别的什么也不做

我试过,但没有奏效:

chrome.webNavigation.onCompleted.addListener(function(o) { 
    chrome.tabs.executeScript(o.tabId, { 
     if (a == b) { 
      file: "test.js" 
     } 

    }); 
} 

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

+0

什么是'了'?什么是'b'? – PeeHaa 2014-08-30 13:20:47

+0

var a = 1; var b = 1; – larsklaus 2014-08-30 13:21:38

+4

你不能在对象文字中使用'if'语句。 – 2014-08-30 13:21:49

回答

3

不能在对象文本中使用if语句。这根本就是无效的语法。一种可能的解决办法是通过基于条件的不同对象:

chrome.webNavigation.onCompleted.addListener(function(o) { 
    chrome.tabs.executeScript(o.tabId, (a == b) ? { file: "test.js"} : {}); 
} 
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" 
    } 
    ); 
} 
+0

好吧,@ benjamin-gruenbaum有一个更好的语法:) – 2014-08-30 13:33:37

相关问题