htmlwidget
El objeto objeto htmlwidget le permite instanciar navegadores HTML adicionales.
IDL de htmlwidget
interface HtmlWidgetEvent {
attribute String type;
[optional] attribute String url;
};
callback HtmlWidgetEventCallback = void (HtmlWidgetEvent event);
[
Constructor(HtmlWidgetParams params)
] interface HtmlWidget {
void postMessage(Object data);
void close();
void raise();
void lower();
void addEventListener(String type, HtmlWidgetEventCallback callback);
void removeEventListener(String type, HtmlWidgetEventCallback callback);
};
interface HtmlWidgetParams {
attribute HtmlWidgetRect rect;
attribute String url;
[optional] attribute NodeParams node;
[optional] attribute JavascriptInjection javascriptInjection;
[optional] attribute bool bsObjects;
[optional] attribute Storage storage;
[optional] attribute String inspectorServer;
[optional] attribute bool inputEnabled;
[optional] attribute Security security;
[optional] attribute String transform;
[optional] attribute String hwzDefault;
[optional] attribute bool interceptReloads;
};
interface HtmlWidgetRect {
attribute long x;
attribute long y;
attribute long w;
attribute long h;
};
interface NodeParams {
attribute bool enabled;
[optional] attribute Array<String> arguments;
};
interface JavascriptInjection {
[optional] attribute JavascriptInjectionDetailList documentCreation;
[optional] attribute JavascriptInjectionDetailList documentReady;
[optional] attribute JavascriptInjectionDetailList deferred;
};
interface JavascriptInjectionDetail {
[optional] attribute String world;
[optional] attribute String source;
[optional] attribute String uri;
[optional] attribute String code;
};
interface Storage {
attribute String path;
attribute long quota;
attribute bool forceSharedStorage;
attribute bool forceUnsharedStorage;
};
interface Security {
[optional] attribute bool insecureOriginEnabled;
[optional] attribute bool cameraEnabled;
[optional] attribute bool desktopCaptureEnabled;
[optional] attribute bool audioCaptureEnabled;
[optional] attribute bool insecureHttpsEnabled;
[optional] attribute bool trustedIframesEnabled;
};Creación de objetos
Para crear un objeto htmlwidget primero cargue el módulo brightsign/htmlwidget mediante el método require(). Luego cree una instancia de la clase htmlwidget.
var HtmlWidgetClass = require("@brightsign/htmlwidget");
var htmlwidget = new HtmlWidgetClass({ rect:{x: 0, y:0, w: 640, h: 480 }, url: "https://brightsign.biz" });HtmlWidgetEvent
Disponible a partir de BOS 9.0.168. Consulte Manejo de eventos de JavaScriptJavaScript Event Handling
La causa del evento puede ser una de las siguientes:
- "load-started": El widget HTML ha comenzado a cargar una página.
- "carga-finalizada": El widget HTML completó la carga de una página.
- "error-de-carga": El widget HTML no pudo cargar una página. Utilice la clave url para identificar el recurso que falla y la clave mensaje para recuperar texto explicativo.
HtmlWidget
postMessage()
void postMessage(Object data)Envía un mensaje asincrónico al proceso del navegador secundario. Si el proceso secundario tiene un objeto @brightsign/messageport abierto, este mensaje generará un evento "bsmessage" en ese objeto. La carga útil puede ser cualquier objeto JavaScript, pero debe tener solo un nivel de profundidad (es decir, no puede incluir otros objetos anidados).
close()
void close()Cierra el proceso del navegador secundario. Esto equivale a llamar a window.close() desde dentro del navegador secundario. Los procesos primarios de Node.js® no se cerrarán automáticamente y el widget HTML no puede ser recolectado por el garbage collector hasta que el widget se cierre.
raise()
void raise()Cambia el orden de apilamiento de los widgets HTML
lower()
void lower()Cambia el orden de apilamiento de los widgets HTML
HtmlWidgetParams
Esta interfaz contiene los parámetros del widget HTML.
- rect HtmlWidgetRect: Contiene los parámetros establecidos del tamaño y posicionamiento del widget.
- url String: La URL que se utilizará para la visualización.
- nodo NodeParams optional: Contiene los parámetros utilizados para especificar la funcionalidad agregada de Node.js.
- javascriptInjection JavascriptInjection optional: Contiene los parámetros que especifican el código JavaScript para inyectar en diferentes puntos de inicialización.
- bsObjects bool optional: Habilita o deshabilita Objetos BrightScript-JavaScript. Este valor está deshabilitado de forma predeterminada.
- almacenamiento Storage optional: Se utiliza para configurar el almacenamiento HTML.
- inspectorServer String optional: Habilita Inspector de Chromium, que le permite depurar aplicaciones JavaScript mientras una página web se está ejecutando. A partir de BOS 8.5.31 también deberá configurar la clave del registro enable_web_inspector (en la sección "html") para habilitar la consola JavaScript.
- Para acceder a la consola, navegue a la dirección IP del reproductor en el número de puerto especificado. Consulte esta página para obtener documentación relacionada con la consola JavaScript.
- En “enable_web_inspector”, "1" permitirá el inspector y "0" o la ausencia del valor lo deshabilitará. Será necesario reiniciar para que estos cambios surtan efecto (si habilita/deshabilita esto mediante la UI de LDWS, puede que se active un reinicio para aplicar el cambio)
Por razones de seguridad, habilitar_inspector_web solo debe utilizarse en presentaciones que no sean de producción. Asegúrese de deshabilitar la consola JavaScript antes de publicar en un entorno de producción. En la versión de Chromium incluida en BOS 8.5.31 y posteriores, la consola JavaScript registrará información en memoria incluso cuando usted no esté conectado al inspector. Esto consumirá memoria hasta que el reproductor se quede sin ella, lo que provocará un fallo.
- inputEnabled bool optional: Habilita eventos de mouse/pantalla táctil. Este valor es false de forma predeterminada.
- seguridad Security optional: Sobrescribe las comprobaciones de seguridad de Chromium.
- transformar String optional: Establece la orientación de pantalla del contenido en el widget (tenga en cuenta que las coordenadas y dimensiones del roRectangle que contiene el widget no se ven afectadas por la rotación). Se aceptan los siguientes valores:
- "identidad": No hay transformación (es decir, el contenido del widget está orientado horizontalmente). Esta es la configuración predeterminada.
- "rot90": El contenido del widget se rota a orientación vertical a 90 grados (en el sentido de las agujas del reloj).
- "rot180": El contenido del widget se rota a orientación vertical a 180 grados (en el sentido de las agujas del reloj).
- "rot270": El contenido del widget se rota a orientación vertical a 270 grados (en el sentido de las agujas del reloj).
- hwzDefault String optional: Especifica el comportamiento predeterminado de Video HWZ . Este valor está apagado de forma predeterminada. Para habilitarlo, establézcalo en encendido.
- interceptReloads bool optional: Evita que window.location.reload() u otras construcciones similares surtan efecto en el navegador. En su lugar, el elemento principal recibirá un evento solicitudDeRecarga .
HtmlWidgetRect
Esta interfaz le permite establecer el tamaño y la posición del rectángulo del widget.
- x long: Especifica la coordenada x para el widget.
- y long: Especifica la coordenada y para el widget.
- w long: Establece el ancho del widget en píxeles.
- h long: Establece la altura del widget en píxeles.
NodeParams
Esta interfaz le permite habilitar Node.js y definir los parámetros de los argumentos de línea de comandos de Node.js.
- habilitado bool: Habilita Node.js en el widget. El valor es falso de forma predeterminada.
- argumentos Array optional: Una matriz que especifica argumentos de línea de comandos.
JavascriptInjection
Use esta interfaz para inyectar scripts de usuario en el motor JavaScript.
- documentCreation JavascriptInjectionDetailList optional: El script se ejecutará tan pronto como se cree el documento. Este comportamiento no es adecuado para ninguna operación DOM.
- documentReady JavascriptInjectionDetailList optional: El script se ejecutará tan pronto como el DOM esté listo. Este comportamiento es equivalente al evento DOMContentLoaded que se dispara en JavaScript.
- diferido JavascriptInjectionDetailList optional: El script se ejecutará cuando finalice la carga de la página.
JavascriptInjectionDetail
Esta interfaz define los scripts de usuario que utiliza la interfaz JavascriptInjection. Exactamente uno de los campos fuente, uri, o código debe estar definido.
- mundo String optional: Aísla scripts de usuario en diferentes mundos. A esta cadena se le puede asignar uno de los siguientes valores: solicitud, usuario, o main (consulte esta página para más detalles); si el parámetro mundo no está incluido en la matriz, se selecciona "solicitud" de forma predeterminada.
- fuente String optional: Obsoleto. Use uri o código en su lugar.
- uri String optional: Si se define, debe contener un URI "file" o un URI "data" con uno de los siguientes formatos compatibles:
- "data:text/javascript;charset=utf-8;"
- "data:text/javascript;charset=utf-8;base64,"
- "data:text/javascript;charset=us-ascii;"
- "data:text/javascript;charset=us-ascii;base64,"
- código String optional: Si se define, el contenido se ejecutará como código JavaScript.
Almacenamiento
Esta interfaz le permite definir los siguientes parámetros de almacenamiento HTML:
- ruta String: La carpeta utilizada por aplicaciones de almacenamiento local, como la clase de almacenamiento de JavaScript.
- cuota long: El tamaño (en bytes) asignado a todas las aplicaciones de almacenamiento local (incluido IndexedDB). Si la ruta de almacenamiento se especifica sin una cuota de almacenamiento, Chromium reserva de forma predeterminada 1 GB más el 10 % del tamaño total del dispositivo de almacenamiento.
- forceSharedStorage bool: Permite que las URL cargadas mediante HTTP/HTTPS compartan almacenamiento local si se cargan desde el mismo dominio.
- forceUnsharedStorage bool: Evita que las URL cargadas desde archivos compartan almacenamiento.
Los datos pueden dañarse si dos widgets HTML acceden a la base de datos al mismo tiempo, pero algunas aplicaciones dependen de este tipo de acceso. Use la marca force_unshared_storage para evitar compartir en URL locales si experimenta problemas de datos, o use la marca force_shared_storage para permitir compartir en sitios HTTP/HTTPS. (Si ambas marcas están establecidas, el almacenamiento de archivos se separa y el almacenamiento HTTP no.)
Seguridad
Anula las comprobaciones de seguridad de Chromium para estos parámetros:
- origenInseguroHabilitado bool optional: Ignora los orígenes inseguros y los trata como habilitados.
- cameraEnabled bool optional: Habilita el acceso de páginas web a cámaras USB conectadas al reproductor (el acceso está deshabilitado de forma predeterminada). Esto permite compatibilidad con aplicaciones WebRTC.
- desktopCaptureEnabled bool optional: Habilita la captura del escritorio.
- audioCaptureEnabled bool optional: Habilita la captura de audio.
- insecureHttpsEnabled bool optional: Ignora los errores de seguridad al conectarse a hosts HTTPS inseguros (HTTPS inseguro está deshabilitado de forma predeterminada). Habilitar esta función hace que el reproductor sea inseguro; no es adecuado para entornos de producción y solo debe utilizarse para pruebas.
- trustedIframesEnabled bool opcional: Controla si el contenido cargado en iframes tiene permitido el acceso a objetos Node.js y BrightSign-JavaScript. Esta marca estará disponible para las versiones BOS 9.1.75.3 y posteriores. Provocará un error al cargar el widget HTML si se usa en versiones anteriores.
- Para habilitar Node en iframes, inicialice habilitado y trustedIframesEnabled como verdadero.
- Para habilitar objetos BrightSign-JavaScript en iframes, inicialice bsObjects y trustedIframesEnabled como verdadero.
Con BOS 8.2 y versiones posteriores (Chromium69 y posteriores), se han agregado varias verificaciones CORS nuevas. security_params.websecurity o enableSecurity(false) no deshabilitan todas estas verificaciones. Use la siguiente configuración de registro en su lugar:
registro de escritura html disable-web-security 1
Esta marca tendrá efecto en todas las instancias de htmlwidget , a diferencia de las marcas anteriores que solo son efectivas en la instancia en la que se llaman.
Para escribir esto en el registro usando roRegistrySectionroRegistrySection:
RegHtml = CreateObject("roRegistrySection", "html")
RegHtml.Write("disable-web-security", "1")
RegHtml.Flush()