Spec-Zone .ru
спецификации, руководства, описания, API
След: Развертывание
Урок: Апплеты Java
Раздел: Выполнение Больше С Апплетами
Вызов Кода JavaScript От Апплета
Домашняя страница > Развертывание > Апплеты Java

Вызов Кода JavaScript От Апплета

Апплеты Java могут вызвать функции JavaScript, существующие в той же самой веб-странице как апплет. Спецификация LiveConnect описывает детали о том, как код JavaScript связывается с кодом Java.

netscape.javascript.JSObject class позволяет апплетам Java получить ссылку на объекты JavaScript и взаимодействовать с веб-страницей. Сводный апплет Данных, описанный затем, вызывает код JavaScript, чтобы получить информацию от веб-страницы и записывает сводку данных обратно к веб-странице.

Предположите, что у Вас есть веб-страница с несколькими функциями JavaScript. Пример AppletPage.html имеет функции JavaScript, чтобы получить возраст, адрес, и номера телефона. Есть также вызванная переменная userName у которого нет никакого значения в начале.

<head>
<title>Data Summary Applet Page - Java to JavaScript LiveConnect</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
<script language="javascript">
    var userName = "";
    
    // returns number
    function getAge() { 
        return 25;
    }
    // returns an object
    function address() { 
        this.street = "1566 Greenwood Lane";
        this.city = "Santa Clara";
        this.state = "CA";
    }
    // returns an array
    function getPhoneNums() { 
        return ["408-111-2222", "408-333-4444"];
    } 
    function writeSummary(summary) {
        summaryElem =
            document.getElementById("summary");
        summaryElem.innerHTML = summary;
    }
    </script>

    <!-- ... -->      
</head>
<body>
    <script src =
      "http://www.java.com/js/deployJava.js"></script>
    <script> 
        <!-- ... -->
        deployJava.runApplet(attributes,
            parameters, '1.6'); 
    </script>          
    <!-- ... -->
    <p id="summary"/>  // this HTML element contains
                             // the summary 
    <!-- ... -->
</body>

Затем, считайте апплет class вызванный DataSummaryApplet. DataSummaryApplet class выполняет следующие операции.

Этот апплет сначала должен получить ссылку на JSObject следующим образом:

...
JSObject window = JSObject.getWindow(this);
...

Поместите предыдущий оператор в попытку... ловят.. блокируйте, чтобы обработать netscape.javascript.JSException.

Теперь, когда у апплета есть ссылка на JSObject, это может вызвать соответствующие функции JavaScript при использовании eval и call методы JSObject.


package javatojs;

import java.applet.Applet;
import netscape.javascript.*; // add plugin.jar to classpath during compilation

public class DataSummaryApplet extends Applet {
    public void start() {
        try {
            JSObject window = JSObject.getWindow(this);

            String userName = "John Doe";

            // set JavaScript variable
            window.setMember("userName", userName);

            // invoke JavaScript function
            Number age = (Number) window.eval("getAge()");

            // get a JavaScript object and retrieve its contents
            JSObject address = (JSObject) window.eval("new address();");
            String addressStr = (String) address.getMember("street") + ", " +
                    (String) address.getMember("city") + ", " +
                    (String) address.getMember("state");

            // get an array from JavaScript and retrieve its contents
            JSObject phoneNums = (JSObject) window.eval("getPhoneNums()");
            String phoneNumStr = (String) phoneNums.getSlot(0) + ", " +
                    (String) phoneNums.getSlot(1);

            // dynamically change HTML in page; write data summary
            String summary = userName + " : " + age + " : " +
                    addressStr + " : " + phoneNumStr;
            window.call("writeSummary", new Object[] {summary})   ;
        } catch (JSException jse) {
            jse.printStackTrace();
        }
    }
}

Скомпилировать код Java, у которого есть ссылка на классы в netscape.javascript пакет, включать <your JDK path>/jre/lib/plugin.jar в Вашем пути к классу. Во времени выполнения программное обеспечение Плагина Java автоматически делает эти классы доступными для апплетов.

Сводный апплет Данных выводит на экран следующий результат на веб-странице:

Result of applet's Java calls to JavaScript on this page
                
John Doe : 25 : 1566 Greenwood Lane, Santa Clara, CA : 408-111-2222, 408-333-4444

Открытый AppletPage.html в браузере, чтобы просмотреть Сводный апплет Данных.


Отметьте:  

Если Вы не видите, что апплет работает, Вы должны установить, по крайней мере, Java Комплект разработчика SE (JDK) 6 обновлений 10 выпусков.



Отметьте:  

Если Вы не видите, что пример работает, Вы, возможно, должны были бы включить интерпретатору JavaScript в своем браузере так, чтобы сценарий Инструментария Развертывания мог функционировать должным образом.


Загрузите исходный код для Вызова Код JavaScript От примера Апплета, чтобы экспериментировать далее.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Отображение Документов в Браузере
Следующая страница: Вызов Методов Апплета От Кода JavaScript