【问题标题】:Why this script is not running?为什么这个脚本没有运行?
【发布时间】:2010-11-16 14:06:19
【问题描述】:

我正在尝试在我的 XBL 文件的开头添加一个脚本,但即使是以下测试也没有运行,知道为什么吗?

<bindings xmlns="http://www.mozilla.org/xbl"
       xmlns:xbl="http://www.mozilla.org/xbl"
       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

 <script language="javascript" type="text/javascript"><![CDATA[
     while(true) {
      dump("OK");
     }
 ]]></script>

</bindings>

--更新

这个无限循环是因为我想要一段代码继续运行。这是与嵌入式系统的通信。

【问题讨论】:

    标签: javascript xbl


    【解决方案1】:

    不知道 XBL,但你的代码有无限循环,没有停止条件。这样的事情就是让 JavaScript 崩溃。

    添加停止条件或“故障安全”,例如在 100,000 次迭代后中断,它不会冻结浏览器。

    【讨论】:

      【解决方案2】:

      XBL 中没有脚本元素,文档是假的:

      https://bugzilla.mozilla.org/show_bug.cgi?id=58757

      【讨论】:

        【解决方案3】:

        我也对XBL一无所知,但我也认为你写这个的方式,它会阻塞执行。目前一切运行同步意味着,解释器将停止在while 结束等待它结束。现在,因为它是一个无限循环,所以这永远不会发生。您可以执行以下操作:

        window.setTimeout(function() {
            while(true) {
                dump("OK");
            }
        }, 1);
        

        这样您就可以异步方式启动while。这应该是非阻塞的。告诉我,如果它有效。

        【讨论】:

        • 看起来这是一个 XBL 问题,而不是 JavaScript 问题。实际上,它从未进入也从未打印(使用 dump() 方法)字符串。
        猜你喜欢
        • 1970-01-01
        • 2019-04-21
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多