Как позвонить в WebStart-развернутый апплет функции от JavaScript?

StackOverflow https://stackoverflow.com/questions/4052132

Вопрос

Я хотел бы позвонить с JavaScript функцией моего класса JNLP. Давайте предположим, что в моем апплете у меня есть функция определена так: public String returnSomething(){ return "bla"; }

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- ########################## IMPORTANT NOTE ############################ -->
<!-- This preview HTML page will work only with JDK 6 update 10 and higher! -->
<!-- ###################################################################### -->
<html>
    <head>
        <title>Test page for launching the applet via JNLP</title>
    </head>
    <body>
        <h3>Test page for launching the applet via JNLP</h3>
        <script src="http://java.com/js/deployJava.js"></script>
        <script>
            var attributes = {
                code:       "winToJnaApi.NewApplet",
                archive:    "JavaApplication6.jar, lib/jna.jar, lib/platform.jar",
                width:      300,
                height:     300,
                name:       "applet",
                id:         "app"
            };
            var parameters = {jnlp_href:"launch.jnlp"}; <!-- Applet Parameters -->
            var version = "1.5"; <!-- Required Java Version -->
            deployJava.runApplet(attributes, parameters, version);
        </script>

    <input type = "button" value ="click" onClick = "document.write(document.getElementById("app").doSomething())">
    <script type="text/javascript">
        document.write(document.getElementById("app"));
    </script>
    </body>
</html>

Является ли это правильным способом позвонить JNLP-развернутым апплетам функций от JavaScript? Потому что этот не дает мне ничего.

Это было полезно?

Решение

Я получил это давным-давно, но я забыл ответить на свой вопрос. Так вот оно:

Предположим, вы определите свой апплет, как это:

<applet id="appletToTest" width=500 height=500 code="com.sample.SampleApplet" archive="JavaApplication6.jar, lib/lib1.jar, lib/lib2.jar">
   <param name="jnlp_href" value="launch.jnlp">
 </applet>

Вы можете получить JavaScript! Ручка к апплету, как это:

var parentAPPLET = document.getElementById("appletToTest");

Теперь какой-либо метод у вас есть в вашем апплете, он лучше вернуть строку или примитивное значение, но даже если это не может работать на нем, предполагая, что вы знаете его методы. Продолжая мой пример сверху, если в вашем апплете у вас есть функция определена так:

public String returnSomething(){ return "bla"; }

Тогда вы можете назвать это с вашим JavaScript, как это:

var parentAPPLET = document.getElementById("appletToTest");
alert (parentAPPLET.returnSomething()); 

И поздравляю, вы назвали методом Java-апплета от JavaScript, который был развернут JWS.

Есть еще один способ сделать это, но это будет работать только в Firefox, поэтому лучше использовать этот. Правила LiveConnect по-прежнему применяются, даже если технология устарена.

Другие советы

Я понимаю, что апплеты, запущенные с помощью JNLP, больше не доступны для JS, но я мог бы ошибаться. Чтобы расследовать его дальше, я бы порекомендовал удалить deployjava.js и жесткое кодирование элемента апплета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top