Какой самый простой способ отправить данные из JApplet в JavaScript? - PullRequest
3 голосов
/ 28 апреля 2011

У меня есть HTML-страница с апплетом, который собирает данные и затем должен отправить эти данные через вызов JavaScript, JS отправляет их в файл PHP.

Я могу отправить аргументы и значения методом GET, но есть ли что-то лучше? Могу ли я использовать JSON, например, в этом апплете? Как мне отправить его на JavaScript?

Апплет не должен быть подписан, поэтому я не могу добавить туда что-нибудь необычное или я могу?

Спасибо за любые советы / указатели.

Edit:
Мне следовало бы сказать это другими словами: «Какой самый универсальный способ отправки данных (> 2 КБ) из JApplet в JavaScript?» Мне бы хотелось, чтобы он работал на как можно большем количестве браузеров (я знаю, что у некоторых людей даже не установлена ​​Java).

Ответы [ 3 ]

4 голосов
/ 28 апреля 2011

Какой самый простой способ отправки данных из Java JApplet в Javascript?

Вероятно, это:

applet.getAppletContext().showDocument
    (new URL("javascript:someJavaScriptFunction(" + params + ");"));

Эта техника, которую я недавно видел в Real's How to Вызов Javascript из Java-апплета . Этот сайт всегда является моим первым местом для проверки задач, связанных с взаимодействием Java / JS. Помимо этого метода, другие способы передачи данных Java <-> JavaScript подробно и (по большей части) продемонстрированы.

Я только что опубликовал один «простой» способ.

3 голосов
/ 28 апреля 2011

Вы можете вызывать функции javascript и вообще общаться с javascript через netscape.javascript.JSObject. Смотрите здесь . Пример:

JSObject win = JSObject.getWindow(this);
win.call("receiveDataFromApplet", new Object[] {param1, param2, param3});

Это вызовет нужную функцию с заданными аргументами.

JSObject является частью JRE/plugin.jar, поэтому он будет работать на каждой JRE. Но вам придется добавить его в ваш classpath (в вашей IDE) для компиляции апплета.

1 голос
/ 18 января 2012

Начиная с JRE 1.6.27 и выше, IE 6+ (не знаю, является ли он только IE) будет получать фокус каждый раз, когда функция выполняется с помощью метода getAppletContext.Если вы не хотите этого, лучше использовать JSObject.

...