Iubenda logo
Genera tus documentos

Documentación

Tabla de contenidos

Cómo llamar a la API de la Cookie Solution desde un iframe

Si la Cookie Solution está integrada dentro de un iframe, se puede llamar a todos los métodos _iub.cs.api a través de postMessage. A continuación, se muestran algunos ejemplos de cómo se pueden realizar estas llamadas.

postMessage

La API necesita recibir una llamada postMessage en formato JSON:

{ 
    __iubCsCall: { 
        command: <api-function-name>, 
        parameters: [...], 
        callId: <a-string-or-integer> 
   } 
}

Donde:

  • command (string) es el nombre de la función API que quieres llamar
  • parameters (array) es una lista de los parámetros que estás enviando a la función API
  • callId (string | int)es el ID utilizado para verificar que el output es para la misma llamada API

Ejemplos

Suponiendo que el iframe de destino está en https://example.com, podemos hacer esta llamada:

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'isConsentGiven',
            parameters: [],
            callId: 1
        }
    }),
    'https://example.com'
);

Esto llamará a la función API isConsentGiven() de la Cookie Solution sin ningún parámetro. El output se devolverá a través de postMessage en forma de una cadena JSON.

Para que el evento message capture este output, necesitará un “listener”. Dependiendo del estado actual de la Cookie Solution, el listener se verá así:

{
    "__iubCsReturn": {
        "returnValue": false,
        "success": true,
        "callId": 1
    }
}

Ejemplo con parámetros

A continuación, te indicamos cómo pasar parámetros a tu llamada postMessage:

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'storeConsent',
            parameters: [{
                consent: false
            }],
            callId: 2
        }
    }),
    'http://localhost:3012'
);

Esta llamada a la función storeConsent() establecerá consent como false y almacenará una cookie de consentimiento.

Actualiza la página para ver los efectos de esta llamada. A continuación, puedes verificar que el consentimiento esté establecido como false evaluando _iub.cs.consent.consent en la consola (debería aparecer false).

El output JSON postMessage debería ser así:

{
    "__iubCsReturn": {
        "success": true,
        "callId": 2
    }
}

Ejemplo de una llamada postMessage mal formulada

Aquí hay un output de una llamada postMessage mal formulada (por ejemplo, una función de API que no existe):

ifr.postMessage(
    JSON.stringify({
        __iubCsCall: {
            command: 'Consent',
            parameters: [{
                consent: false
            }],
            callId: 1
        }
    }),
    'http://localhost:3012'
);

Como no hay una función API llamada Consent en la Cookie Solution, deberías obtener un error como este:

{
    "__iubCsReturn": {
        "returnValue": null,
        "success": false,
        "callId": 1
    }
}

Más información