Spec-Zone .ru
спецификации, руководства, описания, API
|
Этот раздел включает следующие темы:
Плагин Java предлагает два способа получить доступ к ДОМУ: Через JSObject
и через Общий API ДОМА. Каждый метод описывается ниже, наряду с соображениями безопасности.
JSObject
Апплеты Java, возможно, должны выполнить передачу Java к JavaScript, чтобы получить доступ к Объектной модели документа (ДОМ) или вызвать функции JavaScript на странице HTML. Браузеры позволяют передачу между Java и JavaScript через класс обертки Java netscape.javascript.JSObject
. Для получения дополнительной информации см.
Поскольку механизм рендеринга JavaScript реализуется по-другому между браузерами, Плагин Java обеспечивает различные степени поддержки JSObject
в Internet Explorer и Навигаторе. Этот документ определяет как JSObject
поддерживайте работы в различных средах браузера.
JSObject
РаботыJSObjec
t обеспечивает легкий способ получить доступ к ДОМУ страницы HTML. Но потому что различные браузеры реализуют ДОМА по-другому, используя JSObject
в Java апплет может привести к различным поведениям в Плагине Java. Для получения дополнительной информации о реализации ДОМА в определенном браузере, консультируйтесь с руководством разработчика для того браузера.
Вообще, доступ апплетов JSObject
следующим образом:
import netscape.javascript.*; import java.applet.*; import java.awt.*; class MyApplet extends Applet { public void init() { JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject) win.getMember("document"); JSObject loc = (JSObject) doc.getMember("location"); String s = (String) loc.getMember("href"); // document.location.href win.call("f", null); // Call f() in HTML page } } |
Начальная точка static
метод
public static JSObject getWindow(Applet a)
который возвращает a JSObject
представление Window
это содержит данный апплет. Так как этот метод берет только java.applet.Applet
как параметр, JSObject
может быть получен доступ от апплета, но не от боба, если боб не является также апплетом.
Однажды Window
объект получается, апплет может провести по ДОМУ страницы HTML, используя следующие методы:
public Object call(String methodName, Object args[])
public Object eval(String s)
public Object getMember(String name)
public Object getSlot(int index)
public void removeMember(String name)
public void setMember(String name, Object value)
public void setSlot(int index, Object value)
public String toString()
public boolean equals(Object obj)
Мы рекомендуем использовать только getWindow()
, call()
, eval()
, setMember()
и getMember()
в Плагине Java. Реализации getSlot()
, setSlot()
, removeMember()
и toString()
зависимы от браузера; то есть, результат выполнения может измениться в зависимости от версии и платформы браузера, в котором работает Плагин Java.
Для получения дополнительной информации об использовании JSObject
, пожалуйста, считайте раздел, вызванный "Java к Передаче JavaScript" на странице
Скомпилировать код Java, чтобы использовать в своих интересах JSObject
, у Вас должен быть пакет netscape.javascript в CLASSPATH
. Так как 1.4.2 Плагина Java поставляют netscape.javascript в вызванном файле JAR plugin.jar
. Скомпилировать апплет, который использует JSObject
, добавить plugin.jar
в CLASSPATH
перед компиляцией.
Отметьте это хотя JSObject
поддерживается в Плагине Java, он не поддерживается в AppletViewer в Java платформа SE. В результате использование апплетов JSObject
возможно, не работает в AppletViewer или приводит к исключениям.
JSObject
Поддержка в Плагине JavaИз-за соображений безопасности, JSObject
поддержка не включается в Плагине Java по умолчанию. Включать JSObject
поддержка в Плагине Java, новый атрибут вызывают MAYSCRIPT
потребности присутствовать в EMBED/OBJECT
тег следующим образом:
APPLET
тег:
<APPLET code="XYZApp.class" codebase="html/" align="baseline" width="200" height="200" MAYSCRIPT> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz"> No JDK 1.3 support for APPLET!! </APPLET> |
OBJECT
тег:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="200" height="200" align="baseline" codebase="http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0"> <PARAM NAME="code" VALUE="XYZApp.class"> <PARAM NAME="codebase" VALUE="html/"> <PARAM NAME="type" VALUE="application/x-java-applet;version=1.3"> <PARAM NAME="MAYSCRIPT" VALUE="true"> <PARAM NAME="model" VALUE="models/HyaluronicAcid.xyz"> No JDK 1.3 support for APPLET!! </OBJECT> |
EMBED
тег:
<EMBED type="application/x-java-applet;version=1.3" width="200" height="200" align="baseline" code="XYZApp.class" codebase="html/" model="models/HyaluronicAcid.xyz" MAYSCRIPT=true pluginspage="http://java.sun.com/products/plugin/1.3/plugin-install.html"> <NOEMBED> No JDK 1.3 support for APPLET!! </NOEMBED> </EMBED> |
Если MAYSCRIPT
определяется как ложь, или если MAYSCRIPT
отсутствует, JSObject
отключается. Для получения дополнительной информации о MAYSCRIPT
атрибут в EMBED/OBJECT
тегируйте, см. Используя OBJECT
, EMBED
и APPLET
Теги в Плагине Java.
JavaScript и LiveConnect являются технологиями от Netscape Communications Corporation. Из-за различий в механизме Javascript, реализованном Mozilla и Microsoft, маршалинг данных между Java и JavaScript через LiveConnect может привести к различным типам данных для различных браузеров. Основные отличия в реализациях JavaScript от поставщиков находятся в поддержке типа данных JavaScript, отображении типов данных между Java и JavaScript, и реализацией элемента ДОМА.
ОтметитьИсходная спецификация JavaScript доступна в Исходная спецификация LiveConnect доступна в |
Этот раздел обсуждает Общий API ДОМА в Плагине Java 6. Это обеспечивает стандартный API для того, чтобы он получил доступ к ДОМУ в браузере для браузеров от различных поставщиков браузера, работающих на различных платформах.
ОтметитьПолной поддержке предоставляют Internet Explorer 6 и поддерживаемые браузеры Mozilla. Поддержка ограничивается с другими браузерами. |
Этот API создается на Объектной модели документа (ДОМ) рекомендация Уровня 2. (См.
Общий API ДОМА включает следующие w3c-определенные интерфейсные пакеты:
org.w3c.dom.*
org.w3c.dom.css.*
org.w3c.dom.events.*
org.w3c.dom.html.*
org.w3c.dom.stylesheets.*
org.w3c.dom.views.*
Общие классы ДОМА позволяют приложению получать доступ к базовому ДОМУ браузера через API в org.w3c.dom
и org.w3c.dom.html
пакеты.
Каждый ДОМ представляет базовое представление единственного документа XML/HTML в пределах браузера, и каждый браузер может вывести на экран больше чем один документ XML/HTML в многократных фреймах/окнах браузера. Таким образом, когда приложение запрашивает получить доступ к ДОМУ через Общие классы ДОМА, важно возвратить ДОМА, связанного с приложением. Чтобы получить надлежащего ДОМА, связанного с приложением, к объекту Java передадут DOMService.getService()
.
DOMService
возвратит надлежащее DOMService
будут брошены реализации, связанные с объектом, или исключением. Обычно объект Java является компонентом JavaBeans или апплетом. Однако, эта спецификация не устраняет другие типы объекта Java от того, чтобы быть используемым, если DOMServiceProvider
может обработать это.
Выполнять действие на ДОМЕ, объект, который реализует DOMAction
к должны будут передать DOMService.invokeAndWait()
или DOMService.invokeLater()
. DOMAction.run()
будет тогда выполняться на доступе ДОМА, диспетчеризируют поток.
Вот простой пример получения заголовка объекта Документа:
DOMService service = null; try { service = DOMService.getService(MyApplet); String title = (String) service.invokeAndWait(new DOMAction() { public Object run(DOMAccessor accessor) { HTMLDocument doc = (HTMLDocument) accessor.getDocument(MyApplet); return doc.getTitle(); } }); } catch (DOMUnsupportedException e1) { } catch (DOMAccessException e2) { } |
С тех пор может быть больше чем один DOMServiceProvider
, важно позволить третьим сторонам включать их DOMServiceProvider
реализации в Общие классы ДОМА. Достигнуть этого, нового свойства Java, com.sun.browser.dom.DOMServiceProvider
, определяется.
Если это свойство определяется, оно должно содержать список имен классов DOMServiceProvider
реализации, каждый разделенный символом "|".
Когда DOMService.getService()
вызывается, DOMServiceProvider
реализации, определенные com.sun.browser.dom.DOMServiceProvider
будет вызван один за другим, чтобы определить, может ли обеспечивание определить ассоциацию ДОМА объекта согласно порядку, который определяется в свойстве. В случае, если два DOMServiceProvider
реализации могут быть в состоянии обработать тот же самый объект, провайдер, который определяется сначала в свойстве, будет использоваться.
Поскольку ДОМ каждого браузера реализуется по-другому, доступ ДОМА, как ожидают, не будет ориентирован на многопотоковое исполнение. Доступ к реализации объектов ДОМА в этой спецификации должен быть ограничен на доступе ДОМА, диспетчеризируют поток только, таким образом, поток безопасно может быть обеспечен. Чтобы выполнить это, код, получающий доступ к объектам ДОМА, должен быть определяющим контекст в пределах DOMAction.run()
блок. Вызвать действие, также DOMService.invokeAndWait()
или DOMService.invokeLater()
должен использоваться, так, чтобы DOMAction.run()
будет выполняться в доступе ДОМА, диспетчеризируют поток.
Хотя реализации объектов ДОМА нельзя вызвать вне DOMAction.run()
блок, приложение может кэшировать эти объекты ДОМА вокруг как члена экземпляра класса, или передать эти объекты ДОМА между потоками. Однако, кэширование объектов ДОМА как статические элементы любого объекта запрещается, так как статические элементы имеют тенденцию оставаться вокруг намного дольше чем жизненный цикл базового объекта ДОМА.
Единственный объект в Общих классах ДОМА, которые можно вызвать от любого потока, DOMService
. Доступ к другим объектам в Общих классах ДОМА ограничивается в пределах DOMAction.run()
блок; иначе, исключение будет выдано.
ДОМ браузера обеспечивает доступ к каждой службе в браузере, таким образом, важно гарантировать, что безопасность проверяется должным образом во время каждого вызова в ДОМА. Когда DOMService.invokeAndWait()
или DOMService.invokeLater()
вызывается, контекст защиты вызывающей стороны будет получен. Позже, когда соответствие DOMAction.run()
выполняется на доступе ДОМА, диспетчеризируют поток, контекст защиты вызывающей стороны передадут к браузеру ДОМ, когда реализации объектов ДОМА вызовут. DOMAccessException
будет брошен, если у исходной вызывающей стороны не будет необходимых полномочий получить доступ к ДОМУ.
Политика безопасности доступа ДОМА в каждом браузере отличается. В результате, даже если приложение Java подписывается и полностью доверяется, получая доступ к объектам ДОМА в браузере может все еще привести к DOMAccessException
.
Реализация объектов ДОМА представляет реальные базовые объекты в браузере ДОМ. Поскольку документ XML/HTML изменяется непрерывный, объекты ДОМА в Java больше, возможно, не допустимы. Доступ к недопустимому объекту ДОМА приведет к org.w3c.dom.DOMException
, согласно W3C ДОМ Левель 2 Спецификации. Разработчики, которые пишут код, чтобы получить доступ к объектам ДОМА в DOMAction.run()
не должен принять законность объектов ДОМА в любой данный момент.
Третьи стороны реализовывая эту спецификацию должны обеспечить реализации Общих классов ДОМА в com.sun.browser.dom
пакет. Реализации W3C ДОМ Левель 2 API должны также соответствие к W3C ДОМ Левель 2 Спецификации. Однако, потому что каждый браузер может реализовать различное подмножество W3C API ДОМА, третьи стороны не обязаны обеспечивать реализации всех org.w3c.dom
и org.w3c.dom.html
классы.
com.sun.browser.dom
Этот раздел определяет API com.sun.browser.dom
пакет.
public abstract class DOMService
DOMService
определяет API службы, который включает приложениям к доступу a document
объект, представляющий базового ДОМА браузера window
это встраивает приложения.
|
Отметьте это Object obj
в getService(Object obj)
метод выше является апплетом или бобом.
public abstract class DOMServiceProvider
Экземпляры реализации public abstract class DOMServiceProvider
доступ включения к базовому браузеру ДОМ для данного объекта Java. Экземпляры DOMServiceProvider
не должен быть получен приложением непосредственно.
public abstract class DOMServiceProvider |
Отметьте это Object obj
в canHandle(Object obj)
и getDocument(Object obj)
методы выше являются апплетом или бобом.
public interface DOMAccessor
DOMAccessor
представляет интерфейс, который может использоваться в пределах DOMAction.run()
получить доступ к точке входа браузера ДОМ.
public interface DOMAccessor |
Отметьте это Object obj
в getDocument(Object obj)
метод выше является апплетом или бобом.
public interface DOMAction
DOMAction
инкапсулирует все действия приложений, которые будут выполняться на ДОМЕ браузера.
public interface DOMAction |
public class DOMUnsupportedException
Это исключение выдается от DOMService.getService()
и DOMServiceProvider.getDocument()
если ассоциация между объектом Java и ДОМОМ не может быть найдена.
public class DOMUnsupportedException extends Exception |
public class DOMAccessException
Это исключение выдается от DOMService.accessAndWait()
если какой-либо ДОМ возражает, выдает любое исключение, когда в пределах него получают доступ DOMAction.run()
.
public class DOMAccessException extends Exception |