Miniaplicativos jQuery e Java
-
09-06-2019 - |
Pergunta
Estou trabalhando em um projeto em que usamos um miniaplicativo Java para parte da interface do usuário (um mapa, especificamente), mas construindo o restante da interface do usuário em torno do miniaplicativo em HTML/JavaScript, comunicando-se com o miniaplicativo por meio do LiveConnect/NPAPI .Um pouco bizarro, eu sei, mas vamos presumir que a configuração não esteja em discussão.Comecei planejando usar jQuery como minha estrutura JavaScript, mas me deparei com dois problemas.
Emita o primeiro:
Selecionar o miniaplicativo não fornece acesso aos métodos do miniaplicativo.
Java:
public class MyApplet extends JApplet {
// ...
public String foo() { return "foo!"; }
}
JavaScript:
var applet = $("#applet-id");
alert(applet.foo());
Executar o JavaScript acima resulta em
$("#applet-id").foo is not a function
Isso contrasta com o Prototype, onde o código análogo funciona:
var applet = $("applet-id");
alert(applet.foo());
Então... para onde foram os métodos do miniaplicativo?
Emita o segundo:
Há um problema conhecido com jQuery e miniaplicativos no Firefox 2: http://www.pengoworks.com/workshop/jquery/bug_applet/jquery_applet_bug.htm
É um tiro no escuro, mas alguém sabe de uma solução alternativa?Suspeito que esse problema não possa ser corrigido, o que significará mudar para o Prototype.
Obrigado pela ajuda!
Solução
Para a primeira questão, que tal tentar
alert( $("#applet-id")[0].foo() );
Para a segunda questão aqui está uma fio com uma possível solução alternativa.
Citando a solução alternativa
// 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(); });
altere esse código para:
// Window isn't included so as not to unbind existing unload events jQuery(window).bind("unload", function() { jQuery("*:not('applet, object')").add(document).unbind(); });