Cookie методы работают с текстовым преставление cookie, например, «cookieName=value». Подробно это описано в javadoc`е WebKitBrowser.
6.2 Navigation Services WebKitBrowser предоставляет следующий navigation API для загрузки страницы и навигации с помощью кнопок «Вперед» «Назад» по истории браузера.
back() и forward() методы — асинхронные и могут использоваться вместе с LocationListener или ProgressListener, для подробностей смотрте описанные ниже Event Services. refresh() метод перезагружает текущую страницу.
6.3 Rendering Services
Вместе с тем чтобы обрабатывать содержимое полученное от навигационных сервисов (navigation service), WebKitBrowser может загрузить HTML код используя метод:
Этот метод обработает и отобразит поддерживаемые htmlSrc строки. Эта операция позволяет приложению сгенерировать HTML содержимое с JavaScript функциональностью, а потом отобразить нужным вам образом.
6.4 Event Services
Многие из сервисов WebKitBrowser исполняются асинхронно. Например, при вызове webKitBrowser.setUrl(aUrl) , вместо блокировки UI в ожидании загрузки, браузер начинает загружать контект в отдельном потоке и возвращает управление практически мгновенно. Для всех асинхронных операций WebKitBrowser предоставляет управление событиями.
Ниже представлены интерфейсы и их основные методы для мониторинга асинхронными событиями браузера:
Посмотрите раздел «Известные Проблемы» чтобы узнать больше о проблемах и ограничениях следующих событий: WebkitWindowEvent, ProgressEvent, StatusTextEvent и VisibilityWindowEvent.
6.5 DOM и JavaScript
JavaScript API предоставляет возможность исполнять JavaScript функции или scriptlet`ы в текущем документе. Это основной механизм доступа и управления DOM. Чтобы выполнить JavaScript функцию используйте:
6.6 Plugin Management
Сейчас WebKit для SWT поддерживает большинство плагинов Chromium`а, таких как Flash, пока ещё нет API для разработки планинов и управления ими из Java.
7.0 Технические детали
Java Native Interface (JNI) позволяет WebKitBrowser контролировать Chromium фреймворк и получать асинхронные события. Мы используем измененную версию C++ Chromium Embedded Framework, чтобы упростить встраиваемость и использование движка Chromium WebKit. Интеграция C++ достигается с помощью двух библиотек (DLL), webkit4swt-x.y.z.dllи icudt38.dll. Они подгружаются либо из пути отпределяемом JVM java.library.pathили из подключаемого JAR-архива webkit4swt(они извлекаются в временный каталог во время исполнения). Затем они загружаются системой загрузки DLL. В Vista временный каталог <user_home>/appdata/local/temp.
7.1 Отличия от Chrome
Несмотря на то что WebKit для SWT основан на Chromium, он не использует мультипроцессной архитектуры браузера Google Chrome. Вместо этого каждый экземпляр WebKitBrowser работает в том же потоке что и ваше основное приложение. Плагины так же подгружаются в текущий процесс приложения.
WebKit для SWT использует движок SquirrelFish Extreme JavaScript вместо Google V8. Разница в их производительности достаточно мала.
8.0 Получение исходников
Исходный код WebKit для SWT доступен через анонимный CVS доступ.
pserver:anonymous@opensource.genuitec.com:/home/cvs/public/eclipse/blinki
Весь код структурирован в следующие проекты:
com.genuitec.blinki.webkit4swt — Eclipse feature project
com.genuitec.blinki.webkit.swt — Eclipse Java plugin project
com.genuitec.blinki.webkit.swt.win32 — Eclipse Java plugin fragment project
Прочитайте файл README_CLASSPATH в проекте com.genuitec.blinki.webkit.swt чтобы узнать как нужно настроить classpath вашего проекта, чтобы разрабатывать плагины или Java SWT приложения.
9.0 Известные проблемы
ProgressListener
#changed() вызывается как только браузер начинает изменять состояние. Никогда не вызывается после.
ProgressEvent никогда не обновляются
StatusTextListener#changed() никогда не вызывается так как status text не поддерживается в WebKit
VisibilityWindowListener.hide() никогда не вызывается
OpenWindowListener – следующие свойства WindowEvent не поддерживаются: