在Firefox扩展中注入动态脚本

时间:2011-08-01 20:21:24

标签: javascript firefox firefox-addon browser-extension

我现在正在进行扩展,我有一部分脚本是静态的(永远不会改变),另一部分是从网站加载的。而且,我看到了两种方式:

  1. 使用XMLHttpRequest加载并注入网页
  2. 将其设为<script src="example.com/myscript.js"></script>并自行加载
  3. 但是,第二种方式可能无法访问我的扩展API(扩展文件中定义的功能,即在chrome://myext/script.js中)

    并且,第一种方式可能是不安全的,因为我必须在gBrowser.contentWindow.wrappedJSObject对象中评估代码,该对象是加载页面的Window对象

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是说您希望动态脚本具有chrome权限?如果是这样,为什么不使用XMLHttpRequest加载它,将其保存到磁盘然后将其作为JavaScript模块导入(https://developer.mozilla.org/en/JavaScript_code_modules/Using)。显然有一些安全方面的考虑,因为你从网上给一个脚本几乎无限的特权,但如果你控制脚本的来源,那么你可能是好的。如果您真的担心可以使用HTTPS下载脚本,这将防止有人拦截流量。

如果您希望代码以内容权限运行但可以访问Chrome JavaScript中的函数,那么您可能希望将chrome函数公开给内容,如本文所述:http://weblogs.mozillazine.org/weirdal/archives/017188.html