У меня есть следующий код в апплете для вызова некоторого Javascript (он немного запутан, потому что вызываемый fn получает объект из DOM, идентифицированного divId, и вызывает для него функцию).
@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
Что дает?