【问题标题】:how to add/include js file in xbl?如何在 xbl 中添加/包含 js 文件?
【发布时间】:2011-02-17 22:14:42
【问题描述】:

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

测试类里面的方法就是function caller() { alert("call succeeded"); }

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

【问题讨论】:

    标签: javascript xul xbl


    【解决方案1】:

    这里有更多细节: 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 文件。

    【讨论】:

    • 这是原来的命名空间 xmlns="mozilla.org/xbl" xmlns:xul="mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="mozilla.org/xbl" >
    • 试试 <script src='chrome://content/test.js' >但是删除 xmlns:xbl,你已经有了 xmlns
    • 奇怪的是,我需要两者才能使绑定起作用。我用完整的源代码试过它仍然不起作用。我开始讨厌 xbl
    • 实际上我把它们都放在了(doh!)你能发布整个文件吗?
    • 你能把你的电子邮件发给我吗你的电子邮件地址我的电子邮件地址是 r.m11288@googlemail.com
    【解决方案2】:

    XBL1 不支持脚本标签。最好的办法是在需要时从模块中导入函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-23
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2017-10-05
      • 1970-01-01
      相关资源
      最近更新 更多