---
title: roHtmlWidgetEvent
slug: develop/es/rohtmlwidgetevent
docTags: 
createdAt: 2025-03-11T07:07:18.732Z
---

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` <font color="#6B21A8">string</font>: 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` <font color="#6B21A8">string</font>: 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)](docId\:g_TJkqqHLcfT4Fw5_Z6T0). 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` <font color="#6B21A8">string</font>: 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` <font color="#6B21A8">string</font>: 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` <font color="#6B21A8">int</font>: 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` <font color="#6B21A8">string</font>: El origen de seguridad de la solicitud (aplicable solo para `reason:"javascript-dialog"` ). Este parámetro se agregó en BOS 8.5.16.
- `uri` <font color="#6B21A8">string</font>: 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` <font color="#6B21A8">string</font>: El tipo MIME de la solicitud de descarga (aplicable solo para `reason:"solicitud-de-descarga"` )
- `url` <font color="#6B21A8">string</font>: 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í:

```text
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
```

