Объект WebView
Объект окна браузера
WebView - это компонент окна, встроенный в браузер, в настоящее время поддерживает только Windows, macOS (10.10+). Используйте ядро IE / Edge в Windows, используйте WKWebView в macOS.
Поскольку программа JavaScript в WebView и fibjs находятся в разных движках, если вам нужно взаимодействовать с основной программой, вам нужно использовать сообщения.
Объект, используемый WebView для связи, является внешним, который поддерживает один метод postMessage и два события onmessage и onclose.
Вот простой пример кода связи:
1
2
3
4
5
6
7
8
9// index.js
var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onmessage = msg => console.log(msg);
webview.onload = evt => webview.postMessage("hello from fibjs");
webview.wait();
Содержимое index.html выглядит следующим образом:
1
2
3
4
5
6
7
8<script>
external.onclose = function() {
}
external.onmessage = function(msg){
external.postMessage("send back: " + msg);
};
</script>
Перед закрытием пользовательского окна запускается событие external.onclose, и external.onclose может решить, закрывать ли его. Если external.onclose возвращает false, операция отменяется, в противном случае окно закрывается.
В следующем примере будет ждать 5 секунд после того, как пользователь нажмет кнопку «Закрыть», а затем закроет окно.
1
2
3
4
5
6
7
8
9
10
11
12<script lang="JavaScript">
var bClose = false;
external.onclose = function () {
if (!bClose) {
setTimeout(function () {
bClose = true;
window.close();
}, 5000);
return false;
}
}
</script>
В приведенном выше коде, поскольку сам window.close также запускает событие onclose, необходимо добавить переменную переключателя, чтобы определить, нужно ли обрабатывать событие.
Наследование
Статические свойства
defaultMaxListeners
Целое число, максимальное глобальное количество слушателей по умолчанию
1static Integer WebView.defaultMaxListeners;
Атрибуты члена
type
Строка, механизм WebView текущего окна
1readonly String WebView.type;
dev
Value, объект доступа DevTools, обратитесь к вызывающему интерфейсу: https://chromedevtools.github.io/devtools-protocol/
1readonly Value WebView.dev;
onopen
Событие успешной загрузки функции, запроса и привязки, эквивалентное on ("open", func);
1Function WebView.onopen;
onload
Событие успешной загрузки функции, запроса и привязки, эквивалентное on ("load", func);
1Function WebView.onload;
onaddress
Функция, запрос и привязка события изменения адреса страницы, эквивалентное on ("address", func);
1Function WebView.onaddress;
ontitle
Функция, запрос и привязка события изменения заголовка страницы, эквивалентное on ("title", func);
1Function WebView.ontitle;
onmove
Функция, запрос и привязка событий движения окна, эквивалентные on ("move", func);
1Function WebView.onmove;
В следующем примере выводятся координаты левого верхнего угла окна при его перемещении:
1
2
3
4var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onmove = evt => console.log(evt.left, evt.top);
onresize
Событие изменения размера окна функции, запроса и привязки, эквивалентное on ("size", func);
1Function WebView.onresize;
В следующем примере выводится размер окна при изменении размера окна:
1
2
3
4var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onresize = evt => console.log(evt.width, evt.height);
onclosed
Событие закрытия окна функции, запроса и привязки, на этот раз будет срабатывать после закрытия WebView, что эквивалентно on ("closed", func);
1Function WebView.onclosed;
onmessage
Функция, запрос и привязка для приема события postMessage в веб-просмотре, что эквивалентно on ("message", func);
1Function WebView.onmessage;
ondownload
Функция, запрос и привязка для принятия события изменения статуса транзакции загрузки в веб-просмотре, что эквивалентно on ("загрузка", func);
1Function WebView.ondownload;
Функция члена
loadUrl
Указанная нагрузка url Страница из
1WebView.loadUrl(String url) async;
Параметры звонка:
- url: Строка, указанная url
getUrl
Запросить текущую страницу url
1String WebView.getUrl() async;
Результат возврата:
- String, Вернуться на текущую страницу url
setHtml
Установите html страницы веб-просмотра
1WebView.setHtml(String html) async;
Параметры звонка:
- html: String, установить html
reload
Обновить текущую страницу
1WebView.reload() async;
goBack
Вернуться к предыдущей странице
1WebView.goBack() async;
goForward
Переход на следующую страницу
1WebView.goForward() async;
Распечатать текущий оконный документ
1WebView.print(Integer mode = 1) async;
Параметры звонка:
- mode: Целое число, параметр печати, 0: быстрая печать; 1: стандартная печать; 2: предварительный просмотр печати. По умолчанию 1
printToPDF
Распечатать текущий документ окна в файл PDF
1WebView.printToPDF(String file) async;
Параметры звонка:
- file: String, укажите путь к pdf
executeJavaScript
Запустить фрагмент кода JavaScript в текущем окне
1WebView.executeJavaScript(String code) async;
Параметры звонка:
- code: String, укажите код JavaScript для выполнения
executeDevToolsMethod
Выполнить команду DevTools в текущем окне и вернуть результат
1
2Variant WebView.executeDevToolsMethod(String method,
Object params = {}) async;
Параметры звонка:
- method: String укажите команду DevTools для выполнения
- params: Object, укажите параметры команды
Результат возврата:
- Variant, Вернуть результат выполнения
close
Закрыть текущее окно
1WebView.close() async;
postMessage
Отправить сообщение веб-просмотру
1WebView.postMessage(String msg) async;
Параметры звонка:
msg: String, сообщение для отправки
postMessage необходимо отправить сообщение после загрузки окна, сообщения, отправленные до этого, будут потеряны. Поэтому рекомендуется вызывать этот метод после запуска события onload.
on
Привяжите обработчик события к объекту
1
2Object WebView.on(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Привяжите обработчик события к объекту
1Object WebView.on(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта будет использоваться как имя события, а значение свойства будет использоваться как функция обработки события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
addListener
Привяжите обработчик события к объекту
1
2Object WebView.addListener(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Привяжите обработчик события к объекту
1Object WebView.addListener(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта будет использоваться как имя события, а значение свойства будет использоваться как функция обработки события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
prependListener
Привяжите обработчик события к началу объекта
1
2Object WebView.prependListener(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Привяжите обработчик события к началу объекта
1Object WebView.prependListener(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта будет использоваться как имя события, а значение свойства будет использоваться как функция обработки события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
once
Привязать к объекту функцию одноразовой обработки событий, функция одноразовой обработки будет срабатывать только один раз
1
2Object WebView.once(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Привязать к объекту функцию одноразовой обработки событий, функция одноразовой обработки будет срабатывать только один раз
1Object WebView.once(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта будет использоваться как имя события, а значение свойства будет использоваться как функция обработки события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
prependOnceListener
Привяжите обработчик события к началу объекта
1
2Object WebView.prependOnceListener(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Привяжите обработчик события к началу объекта
1Object WebView.prependOnceListener(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта будет использоваться как имя события, а значение свойства будет использоваться как функция обработки события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
off
Отменить указанную функцию из очереди обработки объекта
1
2Object WebView.off(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Отменить все функции в очереди обработки объекта
1Object WebView.off(String ev);
Параметры звонка:
- ev: String укажите название события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Отменить указанную функцию из очереди обработки объекта
1Object WebView.off(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта используется как имя события, а значение свойства используется как функция обработки события.
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
removeListener
Отменить указанную функцию из очереди обработки объекта
1
2Object WebView.removeListener(String ev,
Function func);
Параметры звонка:
- ev: String укажите название события
- func: Функция, укажите функцию обработки событий
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Отменить все функции в очереди обработки объекта
1Object WebView.removeListener(String ev);
Параметры звонка:
- ev: String укажите название события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Отменить указанную функцию из очереди обработки объекта
1Object WebView.removeListener(Object map);
Параметры звонка:
- map: Object, укажите отношение сопоставления событий, имя свойства объекта используется как имя события, а значение свойства используется как функция обработки события.
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
removeAllListeners
Отменить все прослушиватели всех событий из очереди обработки объекта.Если событие указано, удалить всех прослушивателей указанного события.
1Object WebView.removeAllListeners(String ev);
Параметры звонка:
- ev: String укажите название события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
Отменить все прослушиватели всех событий из очереди обработки объекта.Если событие указано, удалить всех прослушивателей указанного события.
1Object WebView.removeAllListeners(Array evs = []);
Параметры звонка:
- evs: Массив, укажите название события
Результат возврата:
- Object, Вернуть сам объект события, что удобно для цепного вызова
setMaxListeners
Ограничение количества слушателей по умолчанию, только для совместимости
1WebView.setMaxListeners(Integer n);
Параметры звонка:
- n: Целое число, укажите количество событий
getMaxListeners
Получите ограничение количества слушателей по умолчанию, только для совместимости
1Integer WebView.getMaxListeners();
Результат возврата:
- Integer, Вернуться к предельному числу по умолчанию
listeners
Массив слушателей для указанного события объекта запроса
1Array WebView.listeners(String ev);
Параметры звонка:
- ev: String укажите название события
Результат возврата:
- Array, Возвращает массив слушателей для указанного события
listenerCount
Количество слушателей для указанного события объекта запроса
1Integer WebView.listenerCount(String ev);
Параметры звонка:
- ev: String укажите название события
Результат возврата:
- Integer, Возвращает количество слушателей для указанного события
Количество слушателей для указанного события объекта запроса
1
2Integer WebView.listenerCount(Value o,
String ev);
Параметры звонка:
- o: Значение, укажите объект запроса
- ev: String укажите название события
Результат возврата:
- Integer, Возвращает количество слушателей для указанного события
eventNames
Запросить имя события слушателя
1Array WebView.eventNames();
Результат возврата:
- Array, Возвращает массив имен событий
emit
Активно запускать событие
1
2Boolean WebView.emit(String ev,
...args);
Параметры звонка:
- ev: Строка, название события
- args: ..., параметры события, которые будут переданы обработчику события
Результат возврата:
- Boolean, Вернитесь в состояние триггера события, верните истину, если есть событие ответа, в противном случае верните ложь
toString
Возвращает строковое представление объекта, обычно возвращает «[Native Object]», объект может быть повторно реализован в соответствии с его собственными характеристиками.
1String WebView.toString();
Результат возврата:
- String, Возвращает строковое представление объекта
toJSON
Возвращает представление объекта в формате JSON, обычно возвращает набор читаемых атрибутов, определенных объектом.
1Value WebView.toJSON(String key = "");
Параметры звонка:
- key: Строка, не используется
Результат возврата:
- Value, Возвращает значение, содержащее сериализуемый JSON