В вашем примере вы должны увидеть alert('e')
и alert('l')
, потому что вы передаете два аргумента в updateElement.Вы всегда можете использовать объект arguments
в javascript для проверки того, что вы действительно получили.
Я предлагаю всегда создавать окончательный список аргументов отдельно и в последний раз, чтобы у вас не возникало этой проблемы.Это просто ужасный недостаток дизайна, что они не обновили подпись до JSObject.call(String, Object...)
в Java 5, у нас было бы намного меньше головной боли таким образом.
Более чистое решение было бы:
// Java code
window.call("updateElement", new Object[] { "elementId", "elementValue" });
// Javascript code
function updateElement(elId, elVal){
alert(elId);
alert(elVal);
}
но если вы действительно хотите получить массив в JS:
String[] arr = new String[] { "elementId", "elementValue" };
window.call("updateElement", new Object[] { arr });