1

我已经阅读并找到了在 XBL 中添加 js 文件的技术,但这些技术不起作用。我试图声明标签:<'script src='test.js''><'script src='chrome://content/test.js '>,但没有奏效。

测试类中的方法很简单function caller() { alert("call succeeded"); }

是否有一种正确且简单的方法将 js 文件包含在 XBL 中,因此从文件中调用函数就像函数是在 XBL 中编写的一样工作。

4

2 回答 2

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 基本上您需要注册您的模块文件夹进行测试。 js 在其中,按照说明如何从中“导出”函数/变量。然后,您可以将其导入任何 JavaScript、XUL 或 XBL 文件。

于 2011-02-18T10:07:38.250 回答
1

XBL1 不支持脚本标签。您可以做的最好的事情是在需要时从模块中导入函数。

于 2011-02-19T00:10:35.183 回答