Передача функции JS в апплет в качестве прослушивателя событий

Можно ли передать функцию / обратный вызов из javascript в java-апплет?

Например, у меня есть апплет с кнопкой, которая при нажатии вызывает переданный обратный вызов js

function onCommand() {
  alert('Button pressed from applet');
}
applet.onCommand(onCommand);
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
0
2 881
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать JSObject для обратного вызова javascript из Java.

С этой страницы:

import netscape.javascript.*;
import java.applet.*;
import java.awt.*;
class MyApplet extends Applet {
     public void init() {
         JSObject win = JSObject.getWindow(this);
         JSObject doc = (JSObject) win.getMember("document");
         JSObject loc = (JSObject) doc.getMember("location");

         String s = (String) loc.getMember("href");  // document.location.href
         win.call("f", null);                      // Call f() in HTML page
     }
}

Можно ли также передать функцию js, которая является объектом, в качестве первого аргумента win.call вместо имени функции js?

ken 24.09.2008 15:46

Нет, но вместо передачи простой функции обратного вызова вы можете создать новый объект, содержащий его, передать его, а затем использовать форму object.call (name).

moonshadow 24.09.2008 16:00
Ответ принят как подходящий

Я обычно использую то, что я заимствовал из примера отражения в нижней части эта страница, так как тогда вам не нужно вмешиваться в свой путь к классам, чтобы заставить его скомпилировать

Затем я просто передаю строки JSON между апплетом и javascript.

пс. для использования JSObject вам может потребоваться включить тег "MAYSCRIPT" в тег html апплета.

Другие вопросы по теме