Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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扩展移植到其他浏览器?_Javascript_Html_Firefox Addon_Google Chrome Extension_Ieaddon - Fatal编程技术网

Javascript 有没有办法将chrome扩展移植到其他浏览器?

Javascript 有没有办法将chrome扩展移植到其他浏览器?,javascript,html,firefox-addon,google-chrome-extension,ieaddon,Javascript,Html,Firefox Addon,Google Chrome Extension,Ieaddon,有没有一种方法可以将chrome扩展移植到其他浏览器,而不必完全重新编写代码?我的chrome扩展使用命令在扩展窗口中打开“popup.html” 更新:我发现它只对移植到Safari有所帮助…这取决于扩展的类型,但不是真的。为了更清楚地回答您的问题,您需要指定扩展的内容:修改某些页面(如userscripts/userstyles)、扩展浏览器的功能或其他内容 不过,有一些可移植性说明可以帮助您简化此过程: 不要编写特定于浏览器的代码。在一些现代浏览器中,您可以使用HTML5功能,如Web S

有没有一种方法可以将chrome扩展移植到其他浏览器,而不必完全重新编写代码?我的chrome扩展使用命令在扩展窗口中打开“popup.html”


更新:我发现它只对移植到Safari有所帮助…

这取决于扩展的类型,但不是真的。为了更清楚地回答您的问题,您需要指定扩展的内容:修改某些页面(如userscripts/userstyles)、扩展浏览器的功能或其他内容

不过,有一些可移植性说明可以帮助您简化此过程:

  • 不要编写特定于浏览器的代码。在一些现代浏览器中,您可以使用HTML5功能,如Web SQL数据库API。例如,在IE上很难模仿这种行为
  • 保持JavaScript模块化;不要使用特定于供应商的JavaScript方法,您的代码将是可移植的,并且不会依赖于TraceMonkey或V8
  • 将HTML与CSS和Javascript分开,不要让代码变得肮脏和复杂
  • 苹果正在研究如何将Chrome扩展端口转换为Safari,但您将遇到的问题是,每个浏览器都有一组不同的允许扩展的功能。即使使用Chrome到Safari,你也可以在Chrome中做一些在Safari中做不到的事情,反之亦然。

    有点晚了

    我们的公司-Slice Factory(此处完全公开!)确实提供浏览器扩展转换服务: 在大多数情况下,您的chrome扩展将在FF和Safari中无缝工作

    该服务仍处于测试阶段,Firefox转换比Safari one运行得更好。 我不能完全透露我们的技术解决方案是什么,但这是一个非常好的答案,我可以补充一些细节:我们重新开发了一个完整的javascript api堆栈,它模仿了Safari和Firefox的大多数chrome扩展api;在Firefox中,我们的工作基于JetChrome。此外,我们还有包装器,可以重新包装chrome扩展,添加库和重写清单等等

    除此之外,主要是一些好的想法、尝试和错误,以及大量的开发时间

    例如: Safari 5.1刚刚引入了一个与Chrome浏览器操作相对应的弹出窗口,但我们已经有了一个适用于以前版本的替代解决方案。Firefox不支持HTML5WebSQL,但我们有一个API。我们还提供了一种将webapps带到FF的方法,并很快将其带到Safari。 目标是将ChromeAPI作为参考,并在所有其他浏览器上模拟它


    在不推动您使用我们的解决方案的情况下,我可能会补充说,在Safari和Firefox上完全覆盖ChromeAPI的时间可能不值得——除非您计划转换几个扩展。因此,对于一个或两个扩展,我建议将您的代码尽可能模块化,只创建三个扩展,或者尝试我们的服务

    是的,使用Webextension API是可能的


    我利用它来构建,我只需将回调方法更改为Promises,并使用
    browser.something
    而不是
    chrome.something
    来调用浏览器API。

    你为什么会关心IE兼容性?它不支持扩展。哦,对于IE来说,还有WebSlice。我们将其用于我们的另一个产品作为“代理”:)刚刚尝试了您的服务,但遗憾的是,它没有起作用。(id:hcieongpadegedlcpdhndifhaehajp,bkeiokdfjgnaglohebonlmpimpinahd)@StefanSchmidt不幸的是,总有一些限制!第一种方法不起作用,因为它们在创建页面之前搜索页面中的元素。幸运的是,它可以在chrome上运行。第二个可以转换并在Firefox中运行良好;它不会在safari中转换,因为它的图像格式不受支持,我已经修复了这个问题,但它很可能无法工作,因为safari中弹出窗口和页面之间的cookie分离。如果您有进一步的兴趣,请通过网站页面底部的电子邮件与我联系@Stefano你的色度转换器是一个伟大的东西!你写了“哦,对于IE来说,有一些WebSlice。我们将它们作为‘代理’用于我们的另一个产品。”IE的解决方案在哪里?我有一个chrome扩展,我想移植到IE。@ofear谢谢!!很抱歉,webslice解决方案尚未自动化,因此我们无法轻松提供。WebSlice的交互非常有限,因此它不是一个好的总体解决方案,并且常常需要用不同的方法重新编写大部分扩展。IE10和Win8可能会改变这一点,我们认为我们的努力是为了更可持续的解决方案,所以这就是我们现在正在研究的。IE 8/9中存在一些ActiveX包装解决方案,但我们不提供该解决方案。