簡體   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