2015-01-12 60 views
1

您好我目前正在使用Firefox的Addon-SDK,我想知道是否有一種方法來導入使用DOM對象的JS文件(如窗口)到main.js代碼中。我沒有使用「mozIJSSubScriptLoader」,但插件不斷返回所有在加載腳本中定義的dom對象爲「NOT DEFINED」,我認爲這應該是因爲main.js代碼無法訪問DOM。請讓我知道是否有任何其他方式來導入/加載這些js文件。提前致謝。導入在Firefox中使用DOM對象的JS文件Addon-sdk插件腳本

+0

爲什麼你需要訪問ent ire在main.js JS文件?通常你會在contenct腳本中的這些對象上執行任何代碼,然後將結果傳遞給main.js – willlma

+0

那麼我已經聲明和啓動了這些文件中的幾個變量,我需要使用main.js文件中的變量。如果無論如何只能單獨使用可變參數,那也是可行的。這裏的問題是,main.js不接受DOM對象,這就是爲什麼我的插件返回該窗口未定義,並且contentScriptFile也無法訪問SDK模塊。 。所以我不能使用require和獲取組件導入和導入文件使用mozIJSSubScriptLoader – Vickmaniac

+0

我認爲最好的解決方案將是隻傳遞你需要從DOM對象到main.js使用port.emit而不是嘗試傳遞整個DOM對象。 – willlma

回答

0

您可以訪問一個窗口是這樣的:

const { getMostRecentBrowserWindow } = require('sdk/window/utils'); 
var aXULBrowser = getMostRecentBrowserWindow(); 

,或者你可以通過它們全部列舉,這應該是在SDK /窗/ utils下稱「somethingEnumerateSomething」

+0

如何使用此aXULBrowser導入js?你能告訴我一個例子嗎?說文件名是test.js – Vickmaniac

+0

就像訪問test.js選項卡的內容一樣? – Noitidart

+0

沒有標籤。只是輸入一個js文件的語法 – Vickmaniac

0

東西根據您的在我的其他解決方案發表在此主題:

作爲單獨的答案發布,因爲我認爲解決方案是完全不同的。如果這是正確的答案,請刪除我以前的解決方案。

檢查了以下工作:

+0

我已經嘗試過「mozlJSSubScriptLoader」,並且在我的問題中也提到了這一點。它只能包含.jsm文件而不是.js – Vickmaniac

+0

@MojoJojo是否像這樣使用它:https://code.google。com/p/js-macosx/source/browse/trunk/demo/macosx%40mozilla.js/bootstrap.js#9 var uri = o.Services.io.newURI(src,null,o.Services.io.newURI (__SCRIPT_URI_SPEC__,null,null)); o.Services.scriptloader.loadSubScript(uri.spec,global);'它應該工作 – Noitidart

+0

沒有嘗試過這種方式。它只適用於重新啓動的插件,還是適用於Addon-SDK?因爲當我嘗試這個時,我得到一個錯誤,說「__SCRIPT_URI_SPEC__未定義」 – Vickmaniac

相關問題