【发布时间】:2010-02-11 19:13:50
【问题描述】:
我正在尝试从 Javascript 调用 Java 小程序,但是当我传递一个对象时,Java 小程序只接收到 null。这适用于 IE 和 Firefox,但不适用于 Safari 4(尝试过 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”参数为空。同样,这在 Windows、OSX 和 Linux 中的 Firefox 和 IE 中运行良好,但在 Safari 中,sampleFunction() 将传递一个空参数。
另外,相反的方向似乎也不起作用。如果我得到窗口对象并从 Java 调用 Javascript,我传递的任何对象都不起作用。例如,我可以传递一个字符串数组,在 Javascript 中我得到一个 [Ljava.lang.String 类型对象,但我无法访问其中的任何内容(长度未定义且数组运算符不起作用)。
是 Safari 刚刚坏了还是什么?有什么想法吗?
【问题讨论】:
-
你在谷歌浏览器中试过这个吗?那也是使用WebKit,可能是webkit的问题。
-
在 Windows 版 Chrome 中运行良好。不适用于适用于 Linux 或 OSX 的 Chrome。
-
不知道这是否与它有关:您可以将“applet”标签换成“
java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/… -
这不是我所看到的权限问题,而是完全不同的错误。使用对象标签没有区别。
标签: java javascript safari