Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用chrome.tabs与browser.tabs实现浏览器兼容性_Javascript_Google Chrome Extension_Firefox Addon Webextensions - Fatal编程技术网

Javascript 使用chrome.tabs与browser.tabs实现浏览器兼容性

Javascript 使用chrome.tabs与browser.tabs实现浏览器兼容性,javascript,google-chrome-extension,firefox-addon-webextensions,Javascript,Google Chrome Extension,Firefox Addon Webextensions,我正在将我的Chrome扩展移植到Firefox 根据MDN,chrome应该支持一个API 但是,浏览器不是Chrome stable中的对象。 同时,chrome.tabs在Firefox中运行良好 阅读MDN文档时,用chrome替换浏览器安全吗? 文档编写浏览器的原因是什么?有计划的更改吗?注意:在过去几天里,许多MDN JavaScript API页面已经从使用chrome.*更改为使用browser.*并描述了browser.*界面提供的承诺。这些更改使得页面根本没有提到使用API作

我正在将我的Chrome扩展移植到Firefox

根据MDN,chrome应该支持一个API

但是,
浏览器
不是Chrome stable中的对象。 同时,
chrome.tabs
在Firefox中运行良好

阅读MDN文档时,用
chrome
替换
浏览器
安全吗?
文档编写
浏览器
的原因是什么?有计划的更改吗?

注意:在过去几天里,许多MDN JavaScript API页面已经从使用
chrome.*
更改为使用
browser.*
并描述了
browser.*
界面提供的承诺。这些更改使得页面根本没有提到使用API作为
chrome.*
。这些更改是由项目中与我讨论过从
browser.*
更改为
chrome.*
的同一个人进行的。我还不知道发生了什么事。我已经给他发了一封电子邮件,询问这些变化的原因。截至2016年11月02日,预计他会做出回应还为时过早


我没有参与API的工作。但是,我已经并将对API文档进行一些更改,特别是关于WebExtensions
chrome.*
browser.*
(从2016-09-22起,所有页面都更改为显示
chrome.*
)。我之所以参与其中,也是因为我发现大多数WebExtensionsAPI页面都显示
浏览器。*
令人困惑。我想知道
chrome.*
browser.*
之间有什么区别。一旦我发现了,我想让别人不那么困惑

WebExtensions:
browser.*
对象在调用API时实现的版本。其目的是使
chrome.*
browser.*
的实际功能相同。如果向
浏览器。*
API提供回调函数,则其功能与
chrome.*
API相同

阅读MDN文档时,用
chrome
替换
浏览器
安全吗

是的,除非文件专门讨论承诺。两者之间的唯一区别是,如果调用API时未提供回调函数,则
browser.*
方法将返回承诺

文档编写
浏览器
的原因是什么

我不知道为什么这些文档最初是用
浏览器编写的。*
如此突出。我假设这要么是在生成页面时做出的配置选择,要么是
chrome.*
browser.*
之间的差异在实现WebExtensions API的早期某个时候发生了变化


没有回调的
chrome.*
无法返回承诺,有什么技术原因吗

到目前为止,我提出的唯一原因是,使用
chrome.*
返回承诺将使在API中执行参数检查时无法检查是否存在强制回调函数。使用
browser.*
命名空间,API可以假定调用方正在使用返回的承诺。因此,使用
browser.*
API调用中未提供强制回调函数时,可以返回承诺,而不是生成错误。不过,这是我的猜测

更改文档: 我同意,让API文档主要在语法部分和每个API页面的其他地方显示
browser.*
,会让人感到困惑(例如在示例中)。在过去的3周里,我一直在与WebExtensions文档的主要负责人讨论如何在整个API文档中改变这一点。他同意应该改变

有计划做出改变。文档将至少分两个阶段进行更改。第一步是浏览所有WebExtensionsAPI页面,并将语法部分改为
chrome.*
。语法部分末尾的注释将说明“API也可以作为
browser.*
在A中提供。”此外,整个页面中
browser.*
的所有用法都将更改为
chrome.*
,但专门显示API用作返回承诺的部分除外

目前的预期是,该页面将与现在的页面非常相似。我已经更改了该页面,以显示我建议的更改内容,包括WebExtensions文档负责人的建议。
alarms.clear()
语法部分当前看起来像:

最初(3周前,2016-08-25),我将API页面从更改到,主要更改是将内容从说
browser.*
移动到
chrome.*
,当时我在MDN上进行更改的权限由于垃圾邮件自动过滤而被禁用。这导致了对更改将采用的格式的讨论。我暂停进行更改,希望一旦选择了语法框的中间格式,就可以一次性完成初始更改。由于现实生活的原因,双方的讨论时间比我预期的要长

由于语法框的“正确”格式在文档中不清晰,关于将要使用的确切格式的讨论似乎将扩大到包括

但是,我相信我可以继续改变显示
chrome.*
而不是
browser.*
。这样做可能会导致页面不得不再次编辑,以获得最终确定为正式格式的格式。在完成语法之前,将
浏览器。*
更改为
浏览器。*