在没有html firebug扩展的情况下在javascript中调用java方法

时间:2012-06-14 15:38:08

标签: java javascript applet firebug

我正在尝试为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需要在客户端上运行。

1 个答案:

答案 0 :(得分:1)

如果您的要求是从JavaScript调用Java应用程序,则需要说明Java应用程序需要运行的位置。

如果Java需要在客户端(与Firebug相同的机器)上运行,看起来您要么遇到applet,要么需要在Java中构建一个小型Web服务,这样您就可以通过Web与它通信localhost上的API。

如果您的Java可以位于某个服务器上,您可以通过Web API与您的Java应用程序通信(与上面的第二个选项类似)。

相关问题