我目前正在重寫一個firefox擴展,僅在我的公司內部使用。我開始時將大部分邏輯轉移到通過xul覆蓋中的腳本標記加載的外部js文件中。 (我們發現很難讓員工持續升級,所以我想我可以解決這個問題)。它好工作是這樣的:從Firefox擴展中加載外部腳本
<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>
但後來我不得不動態加載腳本文件,這樣我可以使用首選項來確定它是否會從生產服務器或α/β加載的瘋狂念頭服務器。那是我慘敗的時候。
我已經試過以下失敗:
- $阿賈克斯({數據類型: '劇本',...})//似乎什麼都不做,
- $( '覆蓋') .appendChild(「」,{源:...})//腳本標籤添加,但不執行
- document.createElementNS, etc //腳本添加標籤,但不執行
- Components.utils.import //不接受http協議
- mozIJSSubScriptLoader // does不接受HTTP協議
我沒有嘗試Components.utils.evalInSandbox
但考慮到其限制,恐怕就需要顯著其他代碼更改,將不值得開發週期的輕微簡化。
從閱讀更多的mozilla文檔和bug看來,基本上我試圖做的是打破各種安全問題(我原則上理解,但當然在我的情況下,我完全控制兩端)。
困擾我的事情是,只要硬編碼腳本標記,它似乎工作正常,但只有當我嘗試動態生成腳本標記時纔會失敗。我應該只是折騰一下,或者是否有人知道如何做這個工作?
有趣的是,我很習慣避免評估它從未發生過我作爲一個選項。 –