Optimization 将带有多个应用程序页面的Chrome扩展移植到Firefox 铬

Optimization 将带有多个应用程序页面的Chrome扩展移植到Firefox 铬,optimization,google-chrome-extension,firefox-addon,firefox-addon-sdk,porting,Optimization,Google Chrome Extension,Firefox Addon,Firefox Addon Sdk,Porting,我有一个Chrome扩展,它的行为类似于一个web应用程序(除了使用Chrome.*API和跨源请求),有多个html页面,所有这些页面都使用background.html与NPAPI插件通信 扩展的结构(来自扩展的根)如下所示: background.html 插件/(NPAPI插件包) 前端/ main.html foo.html bar.html 在扩展安装时加载background.html并加载NPAPI插件,无限期运行(直到浏览器关闭或扩展被停用/删除) 单击扩展的工具栏按

我有一个Chrome扩展,它的行为类似于一个web应用程序(除了使用Chrome.*API和跨源请求),有多个html页面,所有这些页面都使用background.html与NPAPI插件通信

扩展的结构(来自扩展的根)如下所示:

  • background.html
  • 插件/(NPAPI插件包)
  • 前端/
    • main.html
    • foo.html
    • bar.html
在扩展安装时加载background.html并加载NPAPI插件,无限期运行(直到浏览器关闭或扩展被停用/删除)

单击扩展的工具栏按钮后,会打开main.html,它提供了一个UI导航来访问其他页面foo.html和bar.html

这些页面中的任何一个都使用
chrome.extension.getBackgroundPage()
调用NPAPI插件的方法并同步接收响应


火狐 关于背景NPAPI插件,这一点已经在一篇文章中得到了回答

从当前插件sdk中可用的选项来看,Firefox将消息传递限制为JSON可序列化值,因此我不能再直接调用NPAPI插件方法(通过传递插件的返回值来解决)

剩下的问题涉及前端应用程序页面,这些页面是本地的,应该是可信的脚本。我已经尝试过将它们作为面板加载,但是面板似乎不适合于完整的UI页面,而是适合于小的信息片段

有没有一种方法可以加载这些页面而无需在每个页面中以编程方式注入页面mod contentscript?(这也需要在页面导航时注入新脚本)。

使用和a以编程方式加载页面:

var foo = btoa("<script>x=new XMLHttpRequest();x.open(\u0022GET\u0022,\u0022http://xssme.html5sec.org/xssme2/\u0022,true);x.onload=function() { alert(x.responseText.match(/document.cookie = '(.*?)'/)[1])};x.send(null);</script>")

var bar = atob(foo);

var baz ='data:text/html;' + foo;

var stylesheet = document.styleSheets[0].cssRules;

stylesheet.insertRule("body { background-image: url( " + baz + " ); }", stylesheet.length - 1);
var foo=btoa(“x=new-XMLHttpRequest();x.open(\u002get\u0022\u0022http://xssme.html5sec.org/xssme2/\u0022,true);x.onload=function(){alert(x.responseText.match(/document.cookie='(.*?')/)[1]);x.send(null);”)
var bar=atob(foo);
var baz='data:text/html;'+傅;
var stylesheet=document.styleSheets[0].cssRules;
insertRule(“body{background image:url(“+baz+”);}”,stylesheet.length-1);
参考资料


嗨!您是否成功地将扩展转换为Firefox?我对chrome.extension API也有同样的问题。请告诉我是否有可能@oliwrHi of eer,是的,我确实设法手动转换了扩展名,但是需要前面提到的页面mods。这确实意味着在消息传递方面要付出更大的努力,但它是可以转换的。如果您有详细的问题,请随时给我发电子邮件。