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 de usuario que se devolverán cuando se generen eventos.
GetUserData() As Object
Devuelve los datos de 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 una matriz asociativa con los siguientes pares clave/valor:
- razón string: La causa del evento, que puede ser una de las siguientes:
- "inicio-de-carga": 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.
- "download-request": 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; en su lugar, pasa este evento, junto con los parámetros mime-type y URL, al autorun de BrightScript para su procesamiento. Para archivos PDF, se manejará de una de estas dos formas:
- En versiones BOS 9.1 anteriores a 9.1.116, Chromium siempre abrirá y mostrará archivos PDF, por lo que no se generará el evento.
- Si la versión de BOS es 9.1.116 o posterior, Chromium abrirá y mostrará archivos PDF solo cuando enable_pdf_viewer esté configurado en Verdadero. Si la marca no está configurada o está configurada en Falso entonces se generará el evento de descarga.
- "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, confirmación, etc. de JavaScript, BrightScript responderá llamando a los métodos roHtmlWidget acceptdialog(responseasString) y rejectdialog() . Consulte roHtmlWidget#roHtmlWidget.acceptdialog(responseasString)roHtmlWidget#roHtmlWidget.acceptdialog(responseasString). Si no se proporciona ninguna respuesta dentro de un segundo, roHtmlWidget rechaza automáticamente el intento de diálogo, y si estas APIs se llaman cuando no hay ninguna solicitud de diálogo en roHtmlWidget, no tendrán 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 fallo de carga (aplicable solo para reason:"load-error"). Esta propiedad existe para varios tipos de eventos, pero tiene diferentes significados para diferentes tipos de eventos.
- texto_predeterminado string: Si un 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álogo (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”: ya sea 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 error o de la solicitud de nueva ventana (aplicable para reason:"load-error" o reason:"new-window-request")
- mime-type string: El tipo MIME de la solicitud de descarga (aplicable solo para reason:"download-request" )
- url string: El URL de la solicitud de descarga (aplicable solo para reason:"download-request" )
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