我在applet中調用一些Javascript時會出現以下代碼(這有點令人費解,因爲調用的fn從divId標識的DOM中獲取對象並調用功能)。從applet調用JS可在Firefox和Chrome中使用,但不能在Safari中使用
@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
參數均報告爲與true
值的JavaRuntimeObject
。
> divId
JavaRuntimeObject
true
什麼給了?
我也經歷過safari不支持javascript,與其他瀏覽器一樣完美 – 2011-05-20 12:36:09
它似乎在兩個方向都被破壞了。從JS中調用applet方法也會返回無用的JavaRuntimeObject,而不是我實際想要返回的內容。 – edoloughlin 2011-05-20 14:57:19