我想开始制作跨浏览器扩展程序。据我所知,每个浏览器的所有API和结构都不同,但有什么通用做法可以遵循吗?
我搜索过Stackoverflow,没有一个问题提供了生成跨浏览器扩展的通用解决方案。
答案 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,我认为有可能有这样的东西。等着瞧 !