Как вызвать метод, объявленный в апплете из JavaScript

Я пытаюсь сделать простой Java-апплет, чтобы открыть для них файл на клиентском компьютере. Я хотел бы вызвать функцию openFile в java-апплете ниже через javascript.

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();
        }
    }
}

Между тегами body моей веб-страницы есть следующее:

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

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

Когда я загружаю страницу, я получаю сообщение об ошибке:

TypeError: Object # не имеет метода 'openFile'

Кто-нибудь знает, что мне нужно сделать, чтобы исправить эту ошибку и заставить апплет работать?

1 ответ

Решение
<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>

Ссылка: вызов методов апплета из JavaScript

Обновить

Javascript разрешается напрямую вызывать открытые методы или открытые переменные Applet. Javascript рассматривает встроенный апплет как объект. Предоставляя апплету идентификатор, 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);
    }       
}
Другие вопросы по тегам