检测WebExtension的manifest.json中的导航器

时间:2017-09-16 11:26:06

标签: if-statement detection firefox-webextensions navigator manifest.json

我目前正在研究WebExtension,我遇到了一个小问题。在我的Firefox浏览器上,我能够导入并运行我的工作而不会出现任何错误/警告。但是,对于Google Chrome,我对未实现的功能(browser_style密钥manifest.json的{​​{1}}属性)发出了重大警告。

我想基于导航器名称创建类似if语句的内容,以便不在Chrome上设置此属性,但将其保留在Firefox上。

以下是我options_ui的一部分:

manifest.json

这就是我想要的(不工作):

"options_ui": {                                                                                                                                                                    
"page": "contents/settings.html",                                                                                                                                              
"browser_style": true                                                                                                                                                       
},

有关如何在"options_ui": { "page": "contents/settings.html", if (options_ui.browser_style) { "browser_style": true } }, 文件中创建此类条件的任何想法吗?

1 个答案:

答案 0 :(得分:0)

作为Daniel Herr implied in a comment manifest.json 文件是直接JSON格式的数据。 JSON无法运行代码。无法在 manifest.json 文件中动态定义属性。您有两个选择:

  1. 忍受警告。
    Chrome和Firefox都有为 manifest.json 文件定义的有效属性,而另一个则不支持。当存在不受支持的属性时,两者都会显示警告。这些只是 警告,不会导致浏览器阻止扩展程序运行。 Chrome在 chrome:// extensions / 中突出显示了这些内容。 Firefox在Browser Console(OSX上的Ctrl-Shift-J或Cmd-Shift-J)中显示它们。
  2. 每个浏览器都有一个单独的 manifest.json 文件 这为您的构建/开发过程增加了一些复杂性,但允许您在每个浏览器中消除这些警告。
  3. 注意:即使您不向Google(Chrome网上应用店 - 扩展程序)和Mozilla(AMO)提交不同的 manifest.json 文件,也不会将扩展程序包分发给用户, manifest.json 文件和扩展包的其他内容将有所不同,因为从提交到分发的过程导致该文件被修改和/或其他文件被添加到扩展包