【发布时间】:2011-08-29 14:52:53
【问题描述】:
我在一个小程序中有以下代码来调用一些 Javascript(这有点令人费解,因为被调用的 fn 从 divId 标识的 DOM 中获取一个对象并在其上调用一个函数)。
@Override
public final void start() {
System.err.println("start() method called");
this.javascript = JSObject.getWindow(this);
this.jsObjectDivId = getParameter("parent_div_id");
this.initCallbackFnName = getParameter("init_callback");
Object args[] = {this.jsObjectDivId, this.initCallbackFnName};
System.out.print("Calling init_callback\n");
this.javascript.call("callJS", args);
}
callJS 函数是:
window.callJS = function(divId, functionName, jsonArgString) {
var args, obj;
obj = $(divId).data('neatObject');
args = eval(jsonArgString);
return obj[functionName](args);
};
在 Firefox/Chrome 中,divId 和 functionName 参数包含有效字符串并且一切正常;在挂起指定 DIV 数据的对象上调用所需的函数。
在 Safari 中,divId 和 functionName 参数都报告为 JavaRuntimeObject,其值为 true。
> divId
JavaRuntimeObject
true
什么给了?
【问题讨论】:
-
我也遇到过 safari 对 javascript 的支持不如其他浏览器那么完美
-
它似乎在两个方向上都坏了。从 JS 调用 applet 方法也会返回一个无用的 JavaRuntimeObject,而不是我真正想要返回的。
标签: java javascript google-chrome safari applet