移植Chrome扩展到Firefox,Safari,IE

时间:2015-05-26 16:06:05

标签: google-chrome internet-explorer firefox google-chrome-extension safari

我想开始制作跨浏览器扩展程序。据我所知,每个浏览器的所有API和结构都不同,但有什么通用做法可以遵循吗?

我搜索过Stackoverflow,没有一个问题提供了生成跨浏览器扩展的通用解决方案。

1 个答案:

答案 0 :(得分:3)

根据我的经验,最好的解决方案是使用将调用浏览器api的适配器类。通过使用正确的适配器,您可以拥有可在每个浏览器上运行的代码。

例如在后台脚本中,你没有为firefox设置setTimeout / setInterval,但你有它用于chrome。你可以拥有这样的代码

<强> Core.js

this._browserAdapter.setTimeout(function(){...}, 1000);

<强> ChromeAdapter.js

setTimeout: function (callback, time) {
        return setTimeout(callback, time);
}

<强> FirefoxAdapter.js

setTimeout: function(callback, time) {

        var {setTimeout} = require("sdk/timers");
        return setTimeout(callback, time);
},

您可以使用这种方式完成所有操作,因此您可以共享90%以上的代码。

修改

它适用于firefox和safari。对于IE来说它完全不同,但是对于新的微软EDGE,我认为有可能有这样的东西。等着瞧 !