2015-01-12 58 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

相关问题