Дополнительные атрибуты WebView
Каждое из свойств, сигналов и методов, предоставляемых WebView, относится к одной из трёх следующих категорий:
- Стабильные атрибуты согласно документации типа WebView.
- Дополнительные атрибуты.
- Экспериментальные атрибуты.
В этой статье описаны дополнительные атрибуты WebView. Такие атрибуты вряд ли будут использоваться большинством разработчиков приложений, однако в некоторых случаях они могут оказаться полезными.
Они должны быть в основном стабильными, однако разработчики WebView оставляют за собой право
изменять или удалять любые из этих атрибутов в будущих версиях Sailfish.WebView
, если это
необходимо.
Свойства
WebView::webViewPage
Свойство типа WebViewPage.
WebViewPage, в который встроен WebView.
Он будет заполнен автоматически, если явно не указан.
WebView::canShowSelectionMarkers
Свойство типа bool
.
Отображает маркеры, когда пользователь выбирает текст на странице.
Если свойство имеет значениеtrue
, пользователь сможет выбирать текст и элементы на странице,
обозначенные маркерами. Следует установить ему значение false
, чтобы отключить маркеры выделения.
Значение по умолчанию: true
.
WebView::textSelectionActive
Свойство типа bool
только для чтения.
Указывает, что текст в данный момент выбирается пользователем.
Этому свойству только для чтения будет присвоено значение true
, если пользователь в данный момент
выбирает текст на странице, или false
в противном случае.
Пока режим выбора текста активен, контроллер выбора текста будет получать события сенсора (например, позволит перетаскивать маркеры выбора) перед самим веб-представлением.
WebView::textSelectionController
Свойство типа Item.
Элемент, который обрабатывает жесты выбора текста.
Если клиентское приложение явно не предоставляет контроллер выбора текста, TextSelectionController
по умолчанию будет из Sailfish.WebView. Элементы управления
будут созданы и использованы при необходимости.
Любой контроллер выбора текста, предоставленный клиентом, должен соответствовать требуемому API.
Дополнительную информацию см. в документации Sailfish.WebView.Controls
.
WebView::downloadsEnabled
Свойство типа bool
.
Включены ли загрузки в веб-представлении.
Если загрузка включена, контекстные меню длительного нажатия будут включать параметры для сохранения ссылки или изображения на устройстве, когда это необходимо.
WebView::virtualKeyboardMargin
Свойство типа real
.
Поле, занимаемое клавиатурой внизу страницы.
При использовании WebView это свойство будет установлено автоматически при открытии или закрытии клавиатуры, и поэтому большинству разработчиков никогда не потребуется изменять поведение по умолчанию, устанавливая это свойство вручную.
В особых случаях, если разработчик приложения хочет точно контролировать, как должен быть организован веб-контент, чтобы компенсировать открытую клавиатуру (например, позволяя клавиатуре в некоторой степени перекрывать веб-контент по какой-либо причине), он может установить это значение вручную.
WebView::orientation
Свойство типа Qt::ScreenOrientation
.
Ориентация веб-представления.
Обычно значение этого свойства соответствует ориентации страницы Silica, на которой отображается веб-представление.
WebView::viewportWidth
Свойство типа real
.
Ширина области просмотра веб-представления в пикселях устройства.
Следует обратить внимание, что ширина области просмотра обычно равна ширине веб-представления, но в некоторых случаях клиенты могут захотеть установить ширину области просмотра явно (например, чтобы показать часть chrome на одном или другом краю, не закрывая некоторое содержимое внизу, при сохранении геометрии самого элемента веб-представления без изменений).
При привязке к этому свойству следует учитывать ориентацию устройства.
См. также: WebView::contentRect, WebView::orientation, WebView::viewportHeight
WebView::viewportHeight
Свойство типа real
.
Высота области просмотра веб-представления в пикселях устройства, которая по умолчанию привязана к высоте экрана (в портретной ориентации) или ширине (в ландшафтной ориентации).
Следует обратить внимание, что высота области просмотра обычно равна высоте веб-представления, но в некоторых случаях клиенты могут захотеть установить высоту области просмотра явно (например, чтобы показать часть chrome на одном или другом краю, не закрывая некоторое содержимое внизу, при сохранении геометрии самого элемента веб-представления без изменений).
При привязке к этому свойству следует учитывать ориентацию устройства.
См. также: WebView::contentRect, WebView::orientation, WebView::viewportWidth
WebView::atXBeginning
Свойство типа bool
только для чтения.
Прокручивается ли область просмотра веб-представления в крайнее левое положение содержимого.
Эффективно, когда значение этого свойства будет true
, если значение x
WebView::scrollableOffset приблизительно равно
нулю (из-за семантики сравнения чисел с плавающей запятой).
См. также: WebView::atXEnd, WebView::scrollableOffset
WebView::atXEnd
Свойство типа bool
только для чтения.
Прокручивается ли область просмотра веб-представления в крайнее правое положение содержимого.
Эффективно, когда значение этого свойства будет true
, если значение x
WebView::scrollableOffset плюс ширина
(масштабированное WebView::resolution)
WebView::contentRect приблизительно равна или больше
ширины
WebView::scrollableSize.
См. также: WebView::atXBeginning, WebView::scrollableOffset, WebView::scrollableSize, WebView::contentRect
WebView::atYBeginning
Свойство типа bool
только для чтения.
Прокручивается ли область просмотра веб-представления к началу содержимого.
Эффективно, когда значение этого свойства будет true
, если значение y
WebView::scrollableOffset приблизительно равно
нулю (из-за семантики сравнения чисел с плавающей запятой).
См. также: WebView::atYEnd, WebView::scrollableOffset
WebView::atYEnd
Свойство типа bool
только для чтения.
Прокручивается ли область просмотра веб-представления к концу содержимого.
Эффективно, когда значение этого свойства будет true
, если значение y
WebView::scrollableOffset плюс высота
(масштабированное WebView::resolution)
WebView::contentRect< /a2> приблизительно равна или больше
высоты
WebView::scrollableSize.
См. также: WebView::atYBeginning, WebView::scrollableOffset, WebView::scrollableSize, WebView::contentRect
WebView::dragging
Свойство типа bool
только для чтения.
Перетаскивает ли пользователь в данный момент прокручиваемую область.
Следует обратить внимание, что если сенсорные события используются контентом (например, панорамирование в приложении карт, которое вызывает загрузку новых тайлов), а не самим веб-представлением, это свойство не будет установлено.
WebView::moving
Свойство типа bool
только для чтения.
Перемещается ли прокручиваемая область в настоящее время из-за инерции от предыдущего жеста перетаскивания.
WebView::pinching
Свойство типа bool
только для чтения.
Выполняет ли пользователь в настоящее время жест сжатия, чтобы изменить масштаб веб-представления.
Следует обратить внимание, что если сенсорные события используются контентом (например, масштабирование в приложении карт, что вызывает загрузку новых тайлов с более высоким разрешением), а не самим веб-представлением, это свойство не будет установлено.
WebView::chrome
Свойство типа bool
.
Виден ли chrome (то есть элементы пользовательского интерфейса для навигации).
При использовании компонента веб-представления навигационный chrome не отображается. Если требуется имитировать поведение панели инструментов Chrome в браузере, можно показать или скрыть свои пользовательские навигационные элементы chrome в соответствии со значением этого свойства.
По умолчанию chrome будет отображаться или скрываться в ответ на определенные жесты. Клиент может переопределить это поведение, установив значение вручную.
См. также: WebView::chromeGestureEnabled, WebView::chromeGestureThreshold
WebView::chromeGestureEnabled
Свойство типа bool
.
Включен ли жест для отображения навигационного chrome.
Если задано значение true
, для chrome устанавливается значение false
(скрытие навигационного
chrome), когда жест панорамирования или пролистывания вызывает движение, превышающее
chromeGestureThreshold
, и автоматически возвращается значение true
при обнаружении аналогичного
жеста в противоположном направлении.
См. также: WebView::chrome, WebView::chromeGestureThreshold
WebView::chromeGestureThreshold
Свойство типа real
.
Порог движения для обнаружения жеста chrome.
См. также: WebView::chromeGestureEnabled, WebView::chrome
WebView::desktopMode
Свойство типа bool
.
Будет ли веб-представление пытаться загрузить десктопную версию сайта, а не мобильную.
От веб-службы зависит, можно ли обслуживать декстопный режим или нет.
WebView::backgroundColor
Свойство типа color
только для чтения.
Цвет фона, заданный в данный момент загруженной страницей.
Сигналы
WebView::recvAsyncMessage(string message, variant data)
Испускается, если асинхронное сообщение не обрабатывается встроенным обработчиком и для указанного сообщения зарегистрирован прослушиватель сообщений.
Клиенты, у которых есть собственная обработка асинхронных сообщений, могут подключиться к этому сигналу, чтобы реализовать собственное поведение.
Методы
WebView::addMessageListener(string name)
Регистрирует прослушиватель асинхронных сообщений с указанным name.
Веб-представление будет испускать recvAsyncMessage()
для сообщений с таким именем, которые
отправляются обработчиками событий и т. д.
WebView::sendAsyncMessage(string name, variant data)
Отправляет асинхронное сообщение с указанными name и data.
Если прослушиватель зарегистрирован для сообщения, ему сообщение будет доставлено.
WebView::loadFrameScript(string name)
Загружает указанный скрипт фрейма.
Скрипт фрейма — это JavaScript-код, который загружается перед любым контентом и имеет возможность манипулировать DOM контента.
Разработчик может загрузить собственный скрипт фрейма для своего экземпляра
WebView, чтобы добавить какой-либо прослушиватель событий
(через addEventListener()
), выполнить некоторую пользовательскую обработку события, а затем
уведомить приложение через асинхронное сообщение.
Например:
webView.loadFrameScript(Qt.resolvedUrl("customframescript.js"));
webView.addMessageListener("appMessageHandler")
где пользовательский скрипт может быть приблизительно следующим:
document.addEventListener("click", function() {
sendAsyncMessage("appMessageHandler", {"click": true})
// веб-представление испустит recvAsyncMessage().
});
WebView::urlLoadingOverride(QJsonObject url, bool isTopLevel)
Свойство типа QJSValue
.
Разрешает или запрещает загрузку URL.
Разработчик может переопределить свойство urlLoadingOverride
, чтобы определить, загружать
или не загружать запрошенный URL-адрес.
Функция должна возвращать true
, чтобы разрешить загрузку запрошенного URL-адреса, и false
,
чтобы запретить.
Все запросы по умолчанию разрешены.
Поля url
:
Поле | Описание |
---|---|
url | Строковое представление URL |
scheme | Схема URL |
userPass | Пароль URL |
host | Хост URL |
port | Порт URL |
filePath | Путь URL |
query | Строка запроса URL |
ref | Фрагмент URL |
isTopLevel
определяет цель для URL.
Если значение равно true
, URL был запрошен для корневого документа.
Если значение равно false
, URL-адрес был запрошен для вложенного документа, такого как фрейм.
Например:
urlLoadingOverride: function(url, isTopLevel) {
// открыть перенаправленный URL-адрес в приложении браузера
if (url.url.indexOf("away.php?") === 0) {
Qt.openUrlExternally(url.url);
return false;
}
return true;
}