【问题标题】:How to use (or avoid) Rhino Javascript in Thunderbird addon?如何在 Thunderbird 插件中使用(或避免)Rhino Javascript?
【发布时间】:2016-11-20 13:54:52
【问题描述】:

我正在开发的 Thunderbird 扩展(插件)中运行一些 JS 代码。该代码包含一些基本的 Java 类。只要它碰到这样的一行:

var s = java.lang.String ('');

它只是停止工作(冻结),没有任何错误或任何返回。

当我在 CLI 上运行相同的 Java 代码时,它运行良好。

我环顾四周,我现在的理解是,这些“java.lang.String”的东西只能在名为 Rhino 的 JS 引擎中工作。 Mozilla 还有另一个名为“spidermonkey”的 JS 引擎。也许任何人都可以回答这些问题之一来帮助我:

  1. 哪个 JS 引擎在 Thunderbird 中运行(用于插件)?
  2. 如何编写/测试将在 TB 中运行的 JS 代码,而无需一直将其部署到插件中?
  3. 为什么 java.lang.String 事情 jsut 冻结并停止,而不是给出未定义符号的错误?
  4. 如何使类 java.lang.String 在 TB 扩展中工作?

谢谢

【问题讨论】:

    标签: javascript java rhino spidermonkey thunderbird-addon


    【解决方案1】:

    虽然您已经弄清楚 Rhino 和 Spidermonkey 之间的基本区别,但this question 的答案包含有关各种 Javascript 引擎之间区别的更多信息。

    哪个 JS 引擎在 Thunderbird 中运行(用于插件)?

    在 Thunderbird 中运行的 JS 引擎是 SpiderMonkey

    如何编写/测试将在 TB 中运行的 JS 代码,而无需部署它 一直到插件中?

    可以在Thunderbird中按Ctrl+Shift+j打开错误控制台,在带有>>前缀的文本框中运行JS。

    为什么 java.lang.String 只是冻结和停止而不是 关于未定义符号的给出和错误?

    恕我直言,它没有挂起,它会遇到异常块。

    在 Thunderbird 的错误控制台中运行您的代码会产生以下错误:

    var str = new java.lang.String('hello');
    ReferenceError: java is not defined [Learn More]
    

    在同样使用 SpiderMonkey 的 Firefox 中运行代码会产生以下异常:

    var str = java.lang.String('Hello');
    /*
    Exception: ReferenceError: java is not defined
    @Scratchpad/3:10:5
    */
    

    如何使类 java.lang.String 在 TB 扩展中工作?

    一种可能的选择是使用XPCOM,但该页面本身会警告将来会弃用 XPCOM 插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-01
      • 2019-08-17
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2015-06-13
      • 1970-01-01
      相关资源
      最近更新 更多