roHtmlWidgetEvent
4 min
Si un roMessagePort está adjunto a un roHtmlWidget, recibirá objetos roHtmlWidgetEvent cuando ocurra algo en la instancia principal de roHtmlWidget .
ifUserData
SetUserData(user_data As Object)
Establece los datos del usuario que se devolverán cuando se generen eventos.
GetUserData() As Object
Devuelve los datos del usuario que se establecieron previamente mediante SetUserData(). Devolverá Invalid si no se ha establecido ningún dato.
ifHTMLWidgetEvent
GetData() As roAssociativeArray
Devuelve los datos del evento como un arreglo asociativo con los siguientes pares clave/valor:
- razón string: La causa del evento, que puede ser una de las siguientes:
- "load-started": El widget HTML ha comenzado a cargar una página.
- "load-finished": El widget HTML completó la carga de una página.
- "load-error": El widget HTML no pudo cargar una página. Utilice la clave uri para identificar el recurso que falló y la clave mensaje para recuperar texto explicativo.
- "solicitud de descarga": La instancia del widget HTML ha recibido una solicitud de descarga. La instancia de Chromium no procesa solicitudes de descarga para tipos MIME que no reconoce (p. ej., PDF); en su lugar, pasa este evento, junto con los parámetros tipo MIME y url al autorun de BrightScript para su procesamiento.
- "new-window-request": La instancia del widget HTML ha recibido una solicitud para abrir un URI en una nueva ventana. Esta solicitud normalmente provendrá de anclas HTML con "target=_blank"/"target=_top" o del método JavaScript Window.open() . El URI solicitado se especifica en el parámetro uri .
- javascript-dialog string: Si la instancia del widget HTML ha recibido una alerta de JavaScript, una confirmación, etc., BrightScript responderá llamando a los métodos de roHtmlWidget acceptdialog(responseasString) y rejectdialog() . Consulte roHtmlWidget#roHtmlWidget.acceptdialog(responseasString)roHtmlWidget#roHtmlWidget.acceptdialog(responseasString). Si no se proporciona una respuesta en un segundo, roHtmlWidget rechaza automáticamente el intento de diálogo y, si estas APIs se llaman cuando no hay una solicitud de diálogo en roHtmlWidget, no tienen efecto. Este parámetro se agregó en BOS 8.5.16.
- mensaje string: El mensaje que mostrará el diálogo JavaScript (aplicable solo para reason:"javascript-dialog" ), o texto explicativo relacionado con el error de carga (aplicable solo para reason:"load-error"). Esta propiedad existe para varios tipos de eventos, pero tiene significados diferentes para distintos tipos de eventos.
- texto_predeterminado string: Si un cuadro de diálogo prompt de JavaScript solicita al usuario que introduzca texto, este texto predeterminado se mostrará en el campo de entrada. Este campo estará vacío para otros tipos de diálogos (aplicable solo para reason:"javascript-dialog" ). Este parámetro se agregó en BOS 8.5.16.
- tipo int: El tipo de diálogo para el evento “javascript-dialog” : 0 para alert, 1 para confirm, 2 para prompt, 3 para un "onbeforeunload Event" (aplicable solo para reason:"javascript-dialog" ). Este parámetro se agregó en BOS 8.5.16.
- security_origin string: El origen de seguridad de la solicitud (aplicable solo para reason:"javascript-dialog" ). Este parámetro se agregó en BOS 8.5.16.
- uri string: El URI del recurso con errores o de la solicitud de nueva ventana (aplicable para razón:"error-de-carga" o reason:"new-window-request")
- tipo MIME string: El tipo MIME de la solicitud de descarga (aplicable solo para reason:"solicitud-de-descarga" )
- url string: El URL de la solicitud de descarga (aplicable solo para reason:"solicitud-de-descarga" )
Ejemplo
El siguiente bucle de eventos espera un evento de widget HTML. Si el evento indica que se ha recibido una solicitud de descarga de PDF, el script pasa los datos relevantes a una función CreatePdfRenderer() que no se define aquí:
while true
ev = wait(0, gaa.mp)
print "=== BS: Received event ";type(ev)
if type(ev) = "roHtmlWidgetEvent" then
eventData = ev.GetData()
if type(eventData) = "roAssociativeArray" and type(eventData.reason) = "roString" then
if eventData.reason = "load-error" then
print "=== BS: HTML load error: "; eventData.message
else if eventData.reason = "load-finished" then
print "=== BS: Received load finished"
receivedLoadFinished = true
else if eventData.reason = "message" then
' To use this: msgPort.PostBSMessage({text: "my message"});
else if eventData.reason = "load-started" then
print "=== BS: Received load started"
else if eventData.reason = "download-request" then
print "=== BS: Received a download request"
if eventData.mime_type = "application/pdf" then
CreatePdfRenderer("file:///index.html?file=" + eventData.url)
endif
else
print "======= UNHANDLED HTML EVENT ========="
print eventData.reason
endif
else
print "=== BS: Unknown eventData: "; type(eventData)
endif
endif
endwhile