有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Safari中将Javascript对象传递给Java小程序?

我试图从Javascript调用Java小程序,但当我传递一个对象时,Java小程序只接收null。这在IE和Firefox中有效,但在Safari4中不起作用(尝试过OSX和Windows版本,两者似乎都不起作用)

我调用的Java小程序方法可能如下所示:

public void sampleFunction(JSObject someobject) throws Exception
{
   someobject.call("somemethod");
}

以及调用它的HTML/Javascript:

<applet archive="Test.jar" code="Test.class" width="0" height="0" id="TestApplet" MAYSCRIPT></applet>
...
var testobject = { somemethod: function() {} };
document.TestApplet.sampleFunction(testobject);

NullPointerException是Safari中的结果,因为Java小程序中的“someobject”参数为null。同样,在Firefox和IE中,在Windows、OSX和Linux中,这也可以正常工作,但在Safari中,sampleFunction()将被传递一个空参数

而且,相反的方向似乎也不起作用。如果我得到窗口对象并从Java调用Javascript,我传递的任何对象都不起作用。例如,我可以传递一个字符串数组,在Javascript中我得到一个[Ljava.lang.String类型的对象,但我无法访问其中的任何内容(长度未定义,数组运算符不起作用)

狩猎旅行刚刚结束还是怎么了?有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    如果可以,我建议将对象序列化为JSON字符串。您可以拦截json2。json中的js。org并使用json。stringify(obj)将其发送到Java小程序。在java方面,您应该能够将JSON字符串反序列化为本机对象。这可能是传输数据最可靠的方法。这种方法的缺点是,您可能需要一种方法来指定从Java端运行的回调方法