JQuery и Java-апплеты

Я работаю над проектом, в котором мы используем Java-апплет для части пользовательского интерфейса (в частности, карты), но строим остальную часть пользовательского интерфейса вокруг апплета в HTML / JavaScript, взаимодействуя с апплетом через LiveConnect / NPAPI. . Я знаю, что это немного странно, но предположим, что эта установка не обсуждается. Я начал планировать использование jQuery в качестве среды JavaScript, но столкнулся с двумя проблемами.

Выпуск первый:

Выбор апплета не обеспечивает доступа к методам апплета.

Ява:

public class MyApplet extends JApplet {
  // ...
  public String foo() { return "foo!"; }
}

JavaScript:

var applet = $("#applet-id");
alert(applet.foo());

Выполнение вышеуказанного JavaScript приводит к

$("#applet-id").foo is not a function

В этом отличие от Prototype, где аналогичный код действительно работает:

var applet = $("applet-id");
alert(applet.foo());

Итак ... куда делись методы апплета?

Выпуск второй:

Известная проблема с jQuery и апплетами в Firefox 2: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm

Это долгий путь, но знает ли кто-нибудь обходной путь? Я подозреваю, что эту проблему нельзя исправить, что означает переход на Prototype.

Спасибо за помощь!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
10
0
13 848
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что касается первого вопроса, как насчет того, чтобы попробовать

alert( $("#applet-id")[0].foo() );

Для второй проблемы вот нить с возможным обходным путем.

Цитата обходного пути

// Prevent memory leaks in IE
// And  prevent errors on refresh with events  like mouseover in other  browsers
// Window isn't included so as not to unbind existing unload events
jQuery(window).bind("unload",
function() {
        jQuery("*").add(document).unbind();
});

измените этот код на:

// Window isn't included so as not to unbind existing unload events
jQuery(window).bind("unload",
function() {
        jQuery("*:not('applet, object')").add(document).unbind();
});

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