CR.*_*CR. 5 javascript java safari
我正在尝试从Javascript调用Java applet,但是当我传递一个对象时,Java applet只接收null.这适用于IE和Firefox,但不适用于Safari 4(尝试过OSX和Windows版本,似乎都不起作用).
我正在调用的Java applet方法可能如下所示:
public void sampleFunction(JSObject someobject) throws Exception
{
someobject.call("somemethod");
}
Run Code Online (Sandbox Code Playgroud)
以及调用它的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);
Run Code Online (Sandbox Code Playgroud)
NullPointerException是Safari中的结果,因为Java applet中的"someobject"参数为null.同样,这适用于Windows,OSX和Linux中的Firefox和IE,但在Safari中,sampleFunction()将传递一个null参数.
而且,反方向似乎也不起作用.如果我得到窗口对象并从Java调用Javascript,我传递的任何对象都不起作用.例如,我可以传递一个字符串数组,在Javascript中我得到一个[Ljava.lang.String类型对象但我无法访问其中的任何内容(长度未定义且数组运算符不起作用).
Safari只是破了还是什么?有任何想法吗?
如果可以的话,我建议将对象序列化为 JSON 字符串。您可以从 json.org 获取 json2.js 并使用 json.stringify(obj) 将其发送到您的 Java 小程序。在 java 端,您应该能够将 JSON 字符串反序列化为本机对象。这可能是传输数据的最可靠的方法。此方法的缺点是您可能需要一种方法来指定要从 Java 端运行的回调方法。