我正在尝试为firebug开发扩展。我想在这个扩展中调用一个java方法但是没有html,所以我不能使用applet-html解决方案。
这是我的Java Applet:
import java.applet.Applet;
import javax.swing.JOptionPane;
public class MyApplet extends Applet {
public void init() {
super.init();
System.out.println("init something");
}
public String jsCall(String hello) {
System.out.println("this method is called by a js function and say :"
+ hello);
Thread t = new Thread(new Runnable(){
public void run(){
JOptionPane jop1 = new JOptionPane();
jop1.showMessageDialog(null, "Message informatif", "Information", JOptionPane.INFORMATION_MESSAGE);
}
});
t.start();
return "lala";
}
}
我试试这个:
var applet = document.createElement("applet");
applet.setAttribute("code","file:///home/dacostam/z_test/firebug-extension-examples-0bdcf15/helloamd@janodvarko.cz/chrome/content/MyApplet.class");
applet.setAttribute("id","javaToJavascriptApplet");
applet.setAttribute("mayscript","true");
applet.jsCall("HelloWorld"); //jsCall not a function
而且:
var dom = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null);
dom.appendChild(applet);
dom.javaToJavascriptApplet.jsCall("HelloWorld"); //jsCall not a function
该文件与往常不同,其中没有正文或html。
还有其他方法可以在javascript中调用java而不是applet-html解决方案吗? 或者有没有办法用这种方法做到这一点,否则呢?
如果您需要更多信息,我就在这里。
感谢。
编辑:
要解释一下程序的作用是多久,请记住,它不可避免地存在于java中,我只需要调用一个接受参数字符串并返回字符串或最终无效的方法。
EDIT2:
抱歉,我没有想到这一点,java需要在客户端上运行。
答案 0 :(得分:1)
如果您的要求是从JavaScript调用Java应用程序,则需要说明Java应用程序需要运行的位置。
如果Java需要在客户端(与Firebug相同的机器)上运行,看起来您要么遇到applet,要么需要在Java中构建一个小型Web服务,这样您就可以通过Web与它通信localhost上的API。
如果您的Java可以位于某个服务器上,您可以通过Web API与您的Java应用程序通信(与上面的第二个选项类似)。