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

Управление ДОМОМ Веб-страницы Апплета

Каждая веб-страница составляется из серии вложенных объектов. Эти объекты составляют Объектную модель документа (ДОМ). Апплет Java может пересечь и изменить объекты своей родительской веб-страницы, используя Common DOM API.

Рассмотрите пример апплета Java, который выводит содержание его родительской веб-страницы.

Чтобы пересечь и управлять деревом ДОМА, следует сначала получить ссылку на Document объект для веб-страницы. Можно сделать так при использовании getDocument метод в com.sun.java.browser.plugin2.DOM class. Вот фрагмент кода, который получает ссылку на a Document объект в DOMDump апплет start метод. См. встроенные комментарии в коде.

public void start() {
    try {
        // use reflection to get document
        Class c =
          Class.forName("com.sun.java.browser.plugin2.DOM");
        Method m = c.getMethod("getDocument",
          new Class[] { java.applet.Applet.class });
        
        // cast object returned as HTMLDocument;
        // then traverse or modify DOM
        HTMLDocument doc = (HTMLDocument) m.invoke(null,
            new Object[] { this });
        HTMLBodyElement body =
            (HTMLBodyElement) doc.getBody();
        dump(body, INDENT);
    } catch (Exception e) {
        System.out.println("New Java Plug-In not available");
        // In this case, you could fallback to the old
        // bootstrapping mechanism available in the
        // com.sun.java.browser.plugin.dom package
    }
}

Теперь, когда у Вас есть ссылка на Document объект, можно пересечь и изменить дерево ДОМА использование Общего API ДОМА. DOMDump апплет пересекает дерево ДОМА и пишет его содержание в Консольный журнал Java.

private void dump(Node root, String prefix) {
    if (root instanceof Element) {
        System.out.println(prefix +
            ((Element) root).getTagName() + 
            " / " + root.getClass().getName());
    } else if (root instanceof CharacterData) {
        String data =
            ((CharacterData) root).getData().trim();
        if (!data.equals("")) {
            System.out.println(prefix +
                "CharacterData: " + data);
        }
    } else {
        System.out.println(prefix +
            root.getClass().getName());
    }
    NamedNodeMap attrs = root.getAttributes();
    if (attrs != null) {
        int len = attrs.getLength();
        for (int i = 0; i < len; i++) {
            Node attr = attrs.item(i);
            System.out.print(prefix + HALF_INDENT +
                "attribute " + i + ": " +
                attr.getNodeName());
            if (attr instanceof Attr) {
                System.out.print(" = " +
                    ((Attr) attr).getValue());
            }
            System.out.println();
        }
    }

    if (root.hasChildNodes()) {
        NodeList children = root.getChildNodes();
        if (children != null) {
            int len = children.getLength();
            for (int i = 0; i < len; i++) {
                dump(children.item(i), prefix +
                    INDENT);
            }
        }
    }
}

Открытый AppletPage.html в браузере, чтобы просмотреть DOMDump выполнение апплета. Проверьте Консольный журнал Java на дамп дерева ДОМА веб-страницы.


Отметьте:  

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



Отметьте:  

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


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


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

Предыдущая страница: Обработка Состояния Инициализации С Обработчиками событий
Следующая страница: Отображение Специализированного Индикатора хода выполнения Загрузки