1

我目前正在开发 WebExtension,但遇到了一个小问题。在我的 Firefox 浏览器上,我可以导入并运行我的工作,而不会出现任何错误/警告。但是,对于 Google Chrome,我对未实现的功能( key的browser_style属性)有一个很大的警告。manifest.jsonoptions_ui

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

这是我的部分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      
    }                                                                                                                                                 
},    

关于如何在manifest.json文件中创建这样的条件的任何想法?

4

1 回答 1

0

正如 Daniel Herr在评论中暗示的那样manifest.json文件是直接的 JSON 格式数据。JSON 无法运行代码。无法在manifest.json文件中动态定义属性。您有 2 个选项:

  1. 忍受警告。
    Chrome 和 Firefox 都为manifest.json文件定义了另一个不支持的有效属性。当存在不受支持的属性时,两者都会显示警告。这些只是警告,不会导致浏览器阻止扩展程序运行。Chrome 在chrome://extensions/中突出显示这些。Firefox 在浏览器控制台中显示它们(在 OSX 上为 Ctrl-Shift-J 或 Cmd-Shift-J)。
  2. 每个浏览器都有一个单独的manifest.json文件。
    这会为您的构建/开发过程增加一些复杂性,但可以让您消除每个浏览器中的这些警告。

注意:即使您不向 Google(Chrome Web Store - Extensions)和 Mozilla(AMO)提交不同的manifest.json文件,当扩展包分发给用户时,manifest.json文件和其他内容扩展包会有所不同,因为从提交到分发的过程会导致该文件被修改和/或其他文件被添加到扩展包中。

于 2017-09-16T19:12:46.933 回答