Привет всем! У меня возникла проблема при попытке вызвать JavaScript из Java-апплета. Я пытаюсь использовать метод showDocument()
, но получаю ошибку о неизвестном протоколе.
Вот мой код:
MoiApplet.getAppletContext().showDocument("javascript:pokazhiSoobshchenie('Privet, mir!');");
Но вместо выполнения JavaScript, я получаю такое исключение:
java.net.MalformedURLException: neizvestnyi protokol: javascript
Я думал, что это должно работать, но очевидно что-то делаю не так. Может кто-нибудь подсказать, в чем проблема и как ее решить? Может есть какой-то другой способ вызвать JavaScript из апплета? Буду благодарен за любую помощь!
Эх, апплеты… Головная боль еще та. Может, стоит подумать о переходе на что-то более современное? Например, веб-приложение на JavaScript? Оно и с браузерами дружит лучше, и с безопасностью проще. А то возиться с этими протоколами - сплошная морока. Как думаешь, есть возможность переписать функционал на чистом JS?
Использование JSObject - хороший вариант, но есть еще один способ. Попробуй через AppletContext и метод eval():
AppletContext context = getAppletContext();
((JSObject)context).eval(“pokazhiSoobshchenie(‘Privet, mir!’)”);
Этот подход тоже работает и не требует доп. импортов. Главное убедись, что у тебя включена поддержка LiveConnect в браузере, иначе могут быть проблемы с безопасностью. В целом апплеты уже устарели, может стоит подумать о веб-приложении?
да, с методом showDocument() часто бывают такие проблемы. я сам сталкивался с этим. попробуй использовать JSObject вместо этого. получи ссылку на window объект браузера и вызывай js-функции через него. примерно так:
JSObject window = JSObject.getWindow(this);
window.eval(“pokazhiSoobshchenie(‘Privet, mir!’)”);
это должно сработать. только не забудь импортировать netscape.javascript.JSObject. удачи с апплетом!