Share via


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 con el messageChild método descrito 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, hay 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 Microsoft Edge (versión anterior) (no Chromium) o 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, se está probando la creación de particiones de almacenamiento 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. Para solucionar este problema, en el explorador, vaya a chrome://flags o edge://flags y, a continuación, establezca la marca Creación de particiones de almacenamiento experimental de terceros (#third-entidad-almacenamiento-partición) en Deshabilitado. 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 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 en el ejemplo siguiente.

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

Usar parámetros de consulta

El siguiente ejemplo muestra cómo pasar datos con un parámetro de consulta.

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 llamado _host_info a la dirección URL que se pasa a displayDialogAsync. (Se anexa después de los parámetros de consulta personalizados, si los hay. No se anexa a las direcciones URL posteriores a las que navega el cuadro de diálogo). Microsoft puede cambiar el contenido de este valor o quitarlo por completo en el futuro, por lo que el código no debería leerlo. El mismo valor se agrega 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.