Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
- Si el complemento se ejecuta en Office en la Web en el explorador Safari, el cuadro de diálogo y el panel de tareas no comparten el mismo almacenamiento local, por lo que no se puede usar para comunicarse entre ellos.
- A partir de la versión 115 de los exploradores basados en Chromium, como Chrome y Edge, la creación de particiones de almacenamiento está habilitada para evitar el seguimiento entre sitios de canal lateral específico (consulte también las directivas del explorador Microsoft Edge). Esto significa que los datos almacenados por las API de almacenamiento, como el almacenamiento local, solo están disponibles para contextos con el mismo origen y el mismo sitio de nivel superior. Siempre que sea posible, se recomienda pasar datos entre el cuadro de diálogo y el panel de tareas mediante los métodos messageParent y messageChild , como se describe en Uso de la API de diálogo de Office en los complementos de Office.
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.