【问题标题】:What is the simplest way to send data from JApplet to JavaScript?将数据从 JApplet 发送到 JavaScript 的最简单方法是什么?
【发布时间】:2011-08-14 04:52:35
【问题描述】:

我有一个带有收集数据的小程序的 HTML 页面,然后应该通过 JavaScript 调用发送此数据,JS 将其发送到 PHP 文件。

我可以通过 GET 方法发送参数和值,但是有更好的方法吗? 例如,我可以在这个小程序中使用 JSON 吗?如何将其发送到 JavaScript?

小程序不应该被签名,所以我不能在那里添加任何花哨的东西,或者我可以吗?

感谢任何提示/指针。

编辑:
我应该换个说法:“从 JApplet 向 JavaScript 发送数据 (>2kb) 的最通用方式是什么?”我希望它可以在尽可能多的浏览器上运行(我知道有些人甚至没有安装 java)。

【问题讨论】:

    标签: java php javascript applet


    【解决方案1】:

    您可以调用javascript函数,一般通过netscape.javascript.JSObject与javascript通信。 See here。一个例子:

    JSObject win = JSObject.getWindow(this);
    win.call("receiveDataFromApplet", new Object[] {param1, param2, param3});
    

    这将使用给定的参数调用所需的函数。

    JSObjectJRE/plugin.jar 的一部分,因此它将在每个 JRE 上运行。但是您必须将它添加到您的类路径(在您的 IDE 中)才能编译小程序。

    【讨论】:

    • 这适用于所有浏览器吗? To compile Java code to take advantage of JSObject, you must have the package netscape.javascript in the CLASSPATH. 那么它会在小程序中运行而不会打扰用户吗?
    • @cradox23 JSObject 是每个 JRE 的 plugin.jar 的一部分。您只需在编译小程序时将该 jar 添加到类路径中。
    • @cradox23 "这适用于所有浏览器吗?"并非所有浏览器都安装了 Java。在支持的浏览器中,绝大多数是 1.3+,但任何运行 1.2 或 1.1 的浏览器都不包括 JSObject。 AFAIR 包含 JSObject 类的 Jar 的名称不久前也发生了变化。啊,是的,它在“如何”页面中。在 1.4.2 之前,它被称为 jaws.jar
    【解决方案2】:

    将数据从 Java JApplet 发送到 Javascript 的最简单方法是什么?

    大概是这样的:

    applet.getAppletContext().showDocument
        (new URL("javascript:someJavaScriptFunction(" + params + ");"));
    

    我最近在 Real's How To 的 Call Javascript from a Java applet 下看到了这项技术。该站点始终是我检查与 Java/JS 交互有关的任务的第一个地方。除了该技术之外,JavaJavaScript 的其他数据传递方式也得到了详细说明并(大部分)进行了演示。

    我刚刚发布了一种“简单”的方式。

    【讨论】:

    • 这个解决方案散发着“eval”的味道,而且,它触及了 URL——如果你有一个不想触及 URL 的页面怎么办(因为你使用哈希来存储状态等)。
    • @Ates: "它触及了 URL" 这是什么意思?访问 this sand-boxed applet 并告诉我 URL 是否更改。它使用上面显示的技术来(希望)将数据从小程序复制到基于 HTML 的文本区域。在使用 1.6.0_24 Oracle Java 的最新模型 FF 中,地址栏中的 URL 没有改变(如果你的意思是这样的话)。
    • @RealHowTo:我从code on your site 得到它。 +2 到您的网站。 ;)
    • 这其实很简单,而且很有效。我在发送更多数据时遇到问题,所以我想发送例如数组或 JSON 对象并在 JS 端接收它。你知道每个 JRE 上都有一些通用库可以做到这一点吗?
    • @cradox23:没有用于编码 JSON 的内置库,但有 plenty out there。很酷的部分是 JSON 是有效的 Javascript,因此您可以直接将其弹出而不会出现问题。
    【解决方案3】:

    从 JRE 1.6.27 和更高版本的 IE 6+(不知道是否仅 IE)将在每次通过 getAppletContext 方法执行函数时获得焦点。如果你不想要这个,你最好使用 JSObject。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2014-02-13
      • 2022-08-20
      • 2011-08-30
      相关资源
      最近更新 更多