Я работаю над проектом, где мы используем апплет Java для части UI (карта, конкретно), но создаем остальную часть UI вокруг апплета в HTML/JavaScript, общаясь с апплетом через LiveConnect/NPAPI. Немного причудливый, я знаю, но давайте предположим, что установка не рассматривается. Я начал планирование использования jQuery как моя платформа JavaScript, но я столкнулся с двумя проблемами.
Выпустите первое:
Выбор апплета не обеспечивает доступ к методам апплета.
Java:
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
Это в отличие от Прототипа, где аналогичный код действительно работает:
var applet = $("applet-id");
alert(applet.foo());
Так..., где методы апплета пошли бы?
Выпустите второе:
Существует известная проблема с jQuery и апплетами в Firefox 2: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
Это - съемка общим планом, но кто-либо знает об обходном решении? Я подозреваю, что эта проблема не является закрепляемой, который будет означать переключаться на Прототип.
Спасибо за справку!
Для первого выпуска, как насчет попытки
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(); });