2011-08-01 74 views
0

我正在做一個擴展,我有一個靜態的腳本部分(永遠不會改變)和另一個從網站加載的部分。而且,我看到2種方式:在Firefox擴展中注入動態腳本

  1. 要使用XMLHttpRequest加載並注入到網頁
  2. 爲了把它作爲一個<script src="example.com/myscript.js"></script>並將它加載它本身

但是,第二方式可能不會有機會獲得我的擴展API(在擴展文件中定義的函數,即chrome://myext/script.js

而且,第一種方式將可能是不安全的,因爲我將不得不EVAL代碼在gBrowser.contentWindow.wrappedJSObject對象,我s已加載頁面的窗口對象

任何想法?

回答

0

你是說你想讓動態腳本擁有chrome權限嗎?如果是這樣,爲什麼不使用XMLHttpRequest加載它,將其保存到磁盤,然後將其作爲JavaScript模塊導入(https://developer.mozilla.org/en/JavaScript_code_modules/Using)。顯然有安全考慮因素,因爲你從網上給腳本幾乎是無限的特權,但如果你控制腳本的來源,那麼你大概沒問題。如果您真的擔心可以使用HTTPS下載腳本,這將防止有人攔截流量。

如果你想要的代碼與內容的權限運行,但有機會獲得在您的Chrome的JavaScript函數,那麼也許你想揭露鉻功能,內容爲這篇文章中描述:http://weblogs.mozillazine.org/weirdal/archives/017188.html

+0

啊我明白了,所以有可能保存到磁盤?你知道嗎? –

+0

另外,我需要這個腳本被注入每個加載頁面,但我認爲'Components.utils.import'導入腳本在xul,而不是在內頁 –

+0

好吧,我添加了一個新的建議,原來的答案,因爲我認爲我現在更瞭解你正在努力做什麼。 –