Compartir a través de


Formas alternativas de pasar mensajes a un cuadro de diálogo desde su página host

La manera recomendada de pasar datos y mensajes de una página primaria a un cuadro de diálogo secundario es mediante el messageChild método , como se describe en Uso de la API de diálogo de Office en los complementos de Office. Si el complemento se ejecuta en una plataforma o host que no admite el conjunto de requisitos dialogApi 1.2, puede usar otras dos maneras de pasar información al cuadro de diálogo.

  • Almacene la información en algún lugar accesible tanto para la ventana host como para el cuadro de diálogo. Las dos ventanas no comparten un almacenamiento de sesión común (la propiedad Window.sessionStorage ), pero si tienen el mismo dominio (incluido el número de puerto, si existe), comparten un almacenamiento local común.

    Nota:

    Los cambios en la seguridad del explorador afectarán a la estrategia de control de tokens.

  • Agregar parámetros de consulta a la dirección URL pasada a displayDialogAsync.

Usar almacenamiento local

Para usar el almacenamiento local, llame al setItem método del window.localStorage objeto en la página host antes de la displayDialogAsync llamada, como se muestra en el ejemplo siguiente.

localStorage.setItem("clientID", "15963ac5-314f-4d9b-b5a1-ccb2f1aea248");

El código del cuadro de diálogo lee el elemento cuando es necesario, como se muestra en el ejemplo siguiente.

const clientID = localStorage.getItem("clientID");
// You can also use property syntax:
// const clientID = localStorage.clientID;

Usar parámetros de consulta

Use este enfoque para los valores pequeños que solo son necesarios cuando se abre inicialmente el cuadro de diálogo.

En la página host, agregue parámetros de consulta a la dirección URL que se pasa a displayDialogAsync.

Office.context.ui.displayDialogAsync('https://myAddinDomain/myDialog.html?clientID=15963ac5-314f-4d9b-b5a1-ccb2f1aea248');

Para ver un ejemplo que utiliza esta técnica, vea Insertar gráficos de Excel con Microsoft Graph en un complemento de PowerPoint.

El código en el cuadro de diálogo puede analizar la URL y leer el valor del parámetro.

Importante

Office agrega automáticamente un parámetro de consulta denominado _host_info a la dirección URL que pasa a displayDialogAsync. Anexa este parámetro después de los parámetros de consulta personalizados, si los hay. No se anexa _host_info a las direcciones URL posteriores a las que navega el cuadro de diálogo. Microsoft podría cambiar el contenido de este valor o quitarlo por completo en el futuro, por lo que el código no debería leerlo. Office agrega el mismo valor al almacenamiento de sesión del cuadro de diálogo (la propiedad Window.sessionStorage ). De nuevo, el código no debe leer ni escribir en este valor.

Solución de problemas comunes

  • Si el almacenamiento local aparece vacío en el cuadro de diálogo, compruebe que la página de host y el cuadro de diálogo usan exactamente el mismo origen.
  • Si falta un valor de parámetro de consulta, confirme que está presente en la dirección URL inicial pasada a displayDialogAsync.
  • Si se necesitan datos después de redirecciones en el flujo de diálogo, use el estado de servidor o almacenamiento local en lugar de basarse solo en parámetros de consulta.

Vea también