|
Spec-Zone .ru
спецификации, руководства, описания, API
|
Каждая веб-страница составляется из серии вложенных объектов. Эти объекты составляют Объектную модель документа (ДОМ). Апплет Java может пересечь и изменить объекты своей родительской веб-страницы, используя Common DOM API.
Рассмотрите пример апплета Java, который выводит содержание его родительской веб-страницы.
Чтобы пересечь и управлять деревом ДОМА, следует сначала получить ссылку на Document объект для веб-страницы. Можно сделать так при использовании getDocument метод в com.sun.java.browser.plugin2.DOM class. Вот фрагмент кода, который получает ссылку на a Document объект в
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.htmlDOMDump выполнение апплета. Проверьте Консольный журнал Java на дамп дерева ДОМА веб-страницы.
Если Вы не видите, что апплет работает, Вы должны установить, по крайней мере, выпусков.
Если Вы не видите, что пример работает, Вы, возможно, должны были бы включить интерпретатору JavaScript в своем браузере так, чтобы сценарий Инструментария Развертывания мог функционировать должным образом.