Javascript 在Firefox扩展中注入动态脚本

Javascript 在Firefox扩展中注入动态脚本,javascript,firefox,firefox-addon,browser-extension,Javascript,Firefox,Firefox Addon,Browser Extension,我现在正在做一个扩展,我有一部分脚本是静态的(永远不会改变),另一部分是从网站加载的。我看到了两种方式: 用XMLHttpRequest加载它并注入到网页中 将其作为并自行加载 但是,第二种方法可能无法访问我的扩展API(访问扩展文件中定义的函数,即chrome://myext/script.js) 而且,第一种方法可能是不安全的,因为我必须在gBrowser.contentWindow.wrappedJSObject对象中计算代码,该对象是加载页面的窗口对象 有什么想法吗?您是说希望动态脚本具

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

  • 用XMLHttpRequest加载它并注入到网页中
  • 将其作为
    并自行加载
  • 但是,第二种方法可能无法访问我的扩展API(访问扩展文件中定义的函数,即
    chrome://myext/script.js

    而且,第一种方法可能是不安全的,因为我必须在
    gBrowser.contentWindow.wrappedJSObject
    对象中计算代码,该对象是加载页面的窗口对象


    有什么想法吗?

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


    如果您希望代码以内容权限运行,但可以访问chrome JavaScript中的函数,那么您可能希望将chrome函数公开给本文所述的内容:

    ahh我明白了,那么是否有可能保存到磁盘?你知道吗?另外,我需要在每个加载的页面中注入这个脚本,但我认为
    Components.utils.import
    在xul中导入脚本,而不是在内部页面中导入脚本好的,我在原始答案中添加了一个新的建议,因为我认为我现在更了解您正在尝试做的事情。非常有趣,Firefox在插件上有完全不同的方法,与Chrome完全不同——在Chrome中,它是一个“带有浏览器API的HTML页面”,而在Firefox中,它类似于“访问HTML的JS API”