如何从javascript中调用applet中声明的方法

时间:2012-12-24 04:10:53

标签: java javascript applet

我正在尝试创建一个基本的Java Applet,以便在客户端的计算机上为它们打开文件。我想通过javascript在下面的java applet中调用openFile函数。

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;

import javax.swing.JApplet;

public class Test extends JApplet {
    public void openFile(String filePath) {
        File f = new File(filePath);

        try {
            Desktop.getDesktop().open(f);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在我的网页的正文标签之间,我有以下内容:

<applet code="Test.class" height="0" width="0"></applet>

<script type="text/javascript">
    document.applets[0].openFile("C:\\test.log");
</script>

当我加载页面时,我收到错误:

  

TypeError:Object#没有方法'openFile'

有谁知道我需要做些什么来修复此错误并让applet正常工作?

1 个答案:

答案 0 :(得分:6)

<script src=
  "http://www.java.com/js/deployJava.js"></script>
<script>
    <!-- applet id can be used to get a reference to
    the applet object -->
    var attributes = { id:'mathApplet',
        code:'jstojava.MathApplet',  width:1, height:1} ;
    var parameters = {jnlp_href: 'math-applet.jnlp'} ;
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

参考:Invoking Applet Methods From JavaScript

<强>更新

允许Javascript直接调用Applet的公共方法或公共变量。 Javascript将嵌入式Applet视为对象。通过为Applet提供ID,Javascript可以使用

访问它
    document.Applet_ID.Applet_Method()

你可以使用它,

<强> MyApplet.html启动

<html>
<head>
<script language="Javascript">
function accessAppletMethod()
{
    document.getElementById("AppletABC").appendText("Applet Method");
}
</script>

<title>Testing</title></head>
<body onload="accessAppletMethod()">

<h1>Javascript acess Applet method</h1>
<applet width=300 height=100 id="AppletABC" 
code="JavaScriptToJava.class">
</applet>

</body>
</html>

<强> JavaScriptToJava.java

import java.applet.Applet;
import java.awt.FlowLayout;
import java.awt.TextArea;

public class JavaScriptToJava extends Applet{

    TextArea textBox;

    public void init(){
        setLayout(new FlowLayout());
        textBox = new TextArea(5,40);
        add(textBox);
    }

    public void appendText(String text){
        textBox.append(text);
    }       
}