我目前正在重写一个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服务器加载。那是我悲惨失败的时候。
我尝试了以下尝试失败:
我没有尝试Components.utils.evalInSandbox
但是考虑到它的限制,我担心它需要进行大量的其他代码更改,这些更改不值得开发周期的轻微简化。
从阅读更多的mozilla文档和错误看来,基本上我正在尝试做的是打破各种安全问题(我原则上理解但当然在我的情况下,我完全控制两端)。< / p>
困扰我的是,只要我对脚本标记进行硬编码,但只有在我尝试动态生成脚本标记时才会失败。我应该只是拉扯或者是否有人知道如何使这项工作?
答案 0 :(得分:1)
您是否尝试过使用XMLHttpRequest读取文件的暴力方法,然后调用eval()来运行它?从表面上看,从安全角度来看,这似乎很可怕,但正如您所说,使用带有HTTP源URL的脚本标记基本上是相同的。