我已经阅读并找到了在XBL中添加js文件的技术,但这些技术不起作用。
我试图声明标记:<'script src='test.js''>
和<'script src='chrome://content/test.js '>
,但都没有。
测试类中的方法只是function caller() { alert("call succeeded"); }
。
是否有正确而简单的方法在jBL中包含js文件,因此从文件调用函数就像在XBL中编写函数一样工作。
答案 0 :(得分:2)
以下是一些更多细节: http://www.w3.org/TR/xbl-primer/#scripts 你正在做的事似乎很好,这是他们给出的例子:
<xbl xmlns="http://www.w3.org/ns/xbl">
<script src="example.js"/>
注意那里的 xmlns ,这是默认的命名空间。如果您将其定义为: xmlns:xbl =“http://www.w3.org/ns/xbl”那么您必须使用
<xbl:script src="example.js" />
尝试一下,我自己从未亲自试过,但这个名称空间的东西是常见的陷阱。
修改强> 我担心这可能是不可能的。这是来自XBL 2.0规范,Gecko似乎还没有支持它,并且在XBL 1.0脚本标签中不存在:
http://groups.google.com/group/mozilla.dev.tech.xbl/msg/d7d4f279ebdad65f?pli=1 他们在这里提到发展应该全面展开。
以下是他们指向的链接:https://wiki.mozilla.org/XBL2但似乎自2009年以来它没有更新,很难说这是否会实现。
这里是XBL 1.0参考,你可以看到脚本标签不存在:https://developer.mozilla.org/en/XBL/XBL_1.0_Reference
但是提供一个可能的替代方案 - 你可以使用模块,并在构造函数中做这样的事情:
<constructor>
Components.utils.import("resource://yourextension/config.js");
有关模块的更多信息:https://developer.mozilla.org/en/JavaScript_code_modules 例如:https://developer.mozilla.org/en/JavaScript_code_modules/Using 基本上你需要注册你的模块文件夹把你的test.js放在里面,按照说明如何从它“导出”函数/变量。然后,您可以将其导入任何JavaScript,XUL或XBL文件。
答案 1 :(得分:1)
XBL1不支持脚本标记。您可以做的最好的事情是在需要时从模块导入函数。