Spec-Zone .ru
спецификации, руководства, описания, API
|
Каждая веб-страница составляется из серии вложенных объектов. Эти объекты составляют Объектную модель документа (ДОМ). Апплет 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 на дамп дерева ДОМА веб-страницы.
Если Вы не видите, что апплет работает, Вы должны установить, по крайней мере,
Если Вы не видите, что пример работает, Вы, возможно, должны были бы включить интерпретатору JavaScript в своем браузере так, чтобы сценарий Инструментария Развертывания мог функционировать должным образом.