Я сделал быстрый тест, и мои результаты хорошо коррелируют с комментариями musicfreak .
Со следующим апплетом:
public class MyClass extends JApplet {
public void init() {
JSObject window = JSObject.getWindow(this);
Object[] args = new String[] { "bar" };
window.call("foo", args);
}
}
и следующей разметкой (обратите внимание на ошибочный JavaScript - в передаваемом мною аргументе bar
нет метода baz
:
<html>
<head>
<title>MyAppletTest</title>
</head>
<body>
<script type="text/javascript">
function foo(bar) { bar.baz(); }
</script>
<applet code="MyApplet.class"></applet>
</body>
</html>
Я получаю сообщение об ошибке:
netscape.javascript.JSException: JavaScript error while calling "foo"
at sun.plugin2.main.client.MessagePassingJSObject.newJSException(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.waitForReply(Unknown Source)
at sun.plugin2.main.client.MessagePassingJSObject.call(Unknown Source)
at MyApplet.init(MyApplet.java:13)
Если я исправлю свойФункция JavaScript, например, заменив bar.baz()
на alert(bar)
, все работает нормально.
Короче говоря, еще раз - взгляните на функцию JavaScript, которую вы пытаетесь вызвать, а также параметры, которые передает ваш апплет.вызов.