Objeto WebView
Objeto de la ventana del navegador
WebView es un componente de ventana incrustado en el navegador, actualmente solo es compatible con Windows, macOS (10.10+). Use IE / Edge kernel en Windows, use WKWebView en macOS.
Dado que el programa JavaScript en WebView y fibjs no están en el mismo motor, si necesita comunicarse con el programa anfitrión, debe usar mensajes.
El objeto utilizado por WebView para la comunicación es externo, que admite un método postMessage y dos eventos onmessage y onclose.
Un código de ejemplo de comunicación simple es el siguiente:
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();
El contenido de index.html es el siguiente:
1
2
3
4
5
6
7
8<script>
external.onclose = function() {
}
external.onmessage = function(msg){
external.postMessage("send back: " + msg);
};
</script>
Antes de que se cierre la ventana del usuario, se activa el evento external.onclose y external.onclose puede decidir si cerrar. Si external.onclose devuelve falso, la operación se cancela; de lo contrario, la ventana se cerrará.
El siguiente ejemplo esperará 5 segundos después de que el usuario haga clic en cerrar y luego cerrará la ventana.
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>
En el código anterior, debido a que window.close también activa el evento onclose, se debe agregar una variable de cambio para identificar si el evento debe procesarse.
Herencia
Propiedades estáticas
defaultMaxListeners
Entero, el número máximo global predeterminado de oyentes
1static Integer WebView.defaultMaxListeners;
Atributos de miembros
visible
Booleano, consulta y establece si se muestra la ventana
1Boolean WebView.visible;
onload
Función, consulta y enlace de evento de éxito de carga, equivalente a on ("load", func);
1Function WebView.onload;
onmove
Función, consulta y vinculación de eventos de movimiento de ventana, equivalente a on ("move", func);
1Function WebView.onmove;
El siguiente ejemplo generará las coordenadas de la esquina superior izquierda de la ventana cuando se mueva la ventana:
1
2
3
4var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onmove = evt => console.log(evt.left, evt.top);
onresize
Función, consulta y enlace de evento de cambio de tamaño de ventana, equivalente a on ("tamaño", func);
1Function WebView.onresize;
El siguiente ejemplo mostrará el tamaño de la ventana cuando se cambie el tamaño de la ventana:
1
2
3
4var gui = require('gui');
var webview = gui.open('fs://index.html');
webview.onresize = evt => console.log(evt.width, evt.height);
onclosed
Función, consulta y vincular evento de cierre de ventana, esta vez se activará después de que se cierre WebView, equivalente a on ("cerrado", func);
1Function WebView.onclosed;
onmessage
Función, consulta y enlace para aceptar el evento postMessage en la vista web, equivalente a on ("mensaje", func);
1Function WebView.onmessage;
Función miembro
setHtml
Establecer la página html de webview
1WebView.setHtml(String html) async;
Parámetros de llamada:
- html : Cadena, establecer html
Imprimir el documento de la ventana actual
1WebView.print(Integer mode = 1) async;
Parámetros de llamada:
- mode : Entero, parámetro de impresión, 0: impresión rápida; 1: impresión estándar; 2: vista previa de impresión. El valor predeterminado es 1
close
Cerrar la ventana actual
1WebView.close() async;
postMessage
Enviar un mensaje a la vista web
1WebView.postMessage(String msg) async;
Parámetros de llamada:
msg: String, el mensaje que se enviará
postMessage necesita enviar un mensaje después de que se cargue la ventana, los mensajes enviados antes de eso se perderán. Por lo tanto, se recomienda llamar a este método después de que se active el evento onload.
on
Vincular un controlador de eventos al objeto
1
2Object WebView.on(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Vincular un controlador de eventos al objeto
1Object WebView.on(Object map);
Parámetros de llamada:
- map : Objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto será el nombre del evento y el valor de la propiedad será la función de procesamiento del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
addListener
Vincular un controlador de eventos al objeto
1
2Object WebView.addListener(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Vincular un controlador de eventos al objeto
1Object WebView.addListener(Object map);
Parámetros de llamada:
- map : Objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto será el nombre del evento y el valor de la propiedad será la función de procesamiento del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
prependListener
Vincular un controlador de eventos al inicio del objeto
1
2Object WebView.prependListener(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Vincular un controlador de eventos al inicio del objeto
1Object WebView.prependListener(Object map);
Parámetros de llamada:
- map : Objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto será el nombre del evento y el valor de la propiedad será la función de procesamiento del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
once
Vincular una función de procesamiento de eventos de una sola vez al objeto, la función de procesamiento de una sola vez solo se activará una vez
1
2Object WebView.once(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Vincular una función de procesamiento de eventos de una sola vez al objeto, la función de procesamiento de una sola vez solo se activará una vez
1Object WebView.once(Object map);
Parámetros de llamada:
- map : Objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto será el nombre del evento y el valor de la propiedad será la función de procesamiento del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
prependOnceListener
Vincular un controlador de eventos al inicio del objeto
1
2Object WebView.prependOnceListener(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Vincular un controlador de eventos al inicio del objeto
1Object WebView.prependOnceListener(Object map);
Parámetros de llamada:
- map : Objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto será el nombre del evento y el valor de la propiedad será la función de procesamiento del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
off
Cancelar la función especificada de la cola de procesamiento de objetos
1
2Object WebView.off(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Cancelar todas las funciones en la cola de procesamiento de objetos
1Object WebView.off(String ev);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Cancelar la función especificada de la cola de procesamiento de objetos
1Object WebView.off(Object map);
Parámetros de llamada:
- map : objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto se usa como nombre del evento y el valor de la propiedad se usa como función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
removeListener
Cancelar la función especificada de la cola de procesamiento de objetos
1
2Object WebView.removeListener(String ev,
Function func);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
- func : función, especificar función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Cancelar todas las funciones en la cola de procesamiento de objetos
1Object WebView.removeListener(String ev);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
Cancelar la función especificada de la cola de procesamiento de objetos
1Object WebView.removeListener(Object map);
Parámetros de llamada:
- map : objeto, especifique la relación de mapeo de eventos, el nombre de la propiedad del objeto se usa como nombre del evento y el valor de la propiedad se usa como función de procesamiento de eventos
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
removeAllListeners
Cancelar todos los detectores de todos los eventos de la cola de procesamiento de objetos. Si se especifica un evento, elimine todos los detectores del evento especificado.
1Object WebView.removeAllListeners(Array evs = []);
Parámetros de llamada:
- evs : Array, especifica el nombre del evento
Devolver resultado:
- Object , devuelve el objeto del evento en sí, fácil de llamar en cadena
setMaxListeners
El límite predeterminado del número de oyentes, solo por compatibilidad
1WebView.setMaxListeners(Integer n);
Parámetros de llamada:
- n : entero, especifique el número de eventos
getMaxListeners
Obtenga el límite predeterminado del número de oyentes, solo por compatibilidad
1Integer WebView.getMaxListeners();
Devolver resultado:
- Integer , devuelve el número límite predeterminado
listeners
Matriz de oyentes para el evento especificado del objeto de consulta
1Array WebView.listeners(String ev);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
Devolver resultado:
- Array , devuelve una matriz de oyentes para el evento especificado
listenerCount
El número de oyentes para el evento especificado del objeto de consulta.
1Integer WebView.listenerCount(String ev);
Parámetros de llamada:
- ev : String, especifica el nombre del evento
Devolver resultado:
- Integer , devuelve el número de oyentes para el evento especificado
eventNames
Nombre del evento de escucha de consultas
1Array WebView.eventNames();
Devolver resultado:
- Array , devuelve una matriz de nombres de eventos.
emit
Activar activamente un evento
1
2Boolean WebView.emit(String ev,
...args);
Parámetros de llamada:
- ev : String, nombre del evento
- args : ..., parámetros de evento, que se pasarán al controlador de eventos
Devolver resultado:
- Boolean , devuelve el estado de activación del evento, devuelve verdadero si hay un evento de respuesta, de lo contrario devuelve falso
toString
Devuelve la representación en cadena del objeto, generalmente devuelve "[Native Object]", el objeto se puede volver a implementar de acuerdo con sus propias características
1String WebView.toString();
Devolver resultado:
- String , devuelve la representación de cadena del objeto.
toJSON
Devuelve la representación en formato JSON del objeto, generalmente devuelve una colección de atributos legibles definidos por el objeto
1Value WebView.toJSON(String key = "");
Parámetros de llamada:
- key : String, sin usar
Devolver resultado:
- Value , devuelve un valor que contiene JSON serializable