繁体   English   中英

从firefox扩展中加载外部脚本

[英]Loading an external script from within firefox extension

我目前正在重写一个firefox扩展,只能在公司内部使用。 我首先将大多数逻辑移到通过xul覆盖内的脚本标签加载的外部js文件中。 (我们发现很难让我们的员工不断升级,所以我认为我可以解决这个问题)。 像这样工作正常:

<overlay id="my-overlay"
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
 xmlns:html="http://www.w3.org/1999/xhtml">
<script type="application/x-javascript" src="https://my.company.com/path/to/jquery.min.js/>
<script type="application/x-javascript" src="https://my.company.com/path/to/toolbar/main.js"/>

<toolbox id="navigator-toolbox"> 

    <!-- some stuff here -->

</toolbox>

但是后来我有了一个疯狂的想法,那就是动态加载脚本文件,以便可以使用首选项来确定是从生产服务器还是从alpha / beta服务器加载该文件。 那是我惨败的时候。

我尝试了以下失败:

  • $ .ajax({dataType:'script',...})//似乎无能为力
  • $('overlay')。appendChild('',{src:...})//脚本标签已添加但未执行
  • document.createElementNS等, //已添加但未执行脚本标签
  • Components.utils.import //不接受HTTP协议
  • mozIJSSubScriptLoader //不接受http协议

我没有尝试过Components.utils.evalInSandbox但是由于它的限制,我担心它需要对其他代码进行重大更改,这不值得稍微简化开发周期。

通过阅读更多的mozilla文档和错误,似乎我基本上正在尝试打破各种安全问题(我原则上理解,但当然,就我而言,我对两端都拥有完全控制权)。

令我困扰的是,只要我对脚本标记进行硬编码,它似乎就可以正常工作,但是只有在尝试动态生成它时才会失败。 我应该扔毛巾还是有人知道做这项工作的方法?

您是否尝试过使用XMLHttpRequest读取文件然后仅调用eval()来运行文件的强力方法? 从表面上看,从安全角度看,这似乎很可怕,但是,正如您所说,将脚本标签与HTTP源URL一起使用基本上是同一回事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM