Iubenda logo
Crie Agora

Documentação

Tabela de conteúdos

Como ativar métodos da API da Cookie Solution a partir de um iframe

Se a Cookie Solution estiver embutida em um iframe, todos os métodos _iub.cs.api podem ser chamados através do postMessage. Seguem abaixo alguns exemplos de como essas chamadas podem ser feitas.

Formato postMessage

A API precisa receber uma chamada postMessage no seguinte formato JSON:

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

Onde:

  • command (string) é o nome da função API que você quer chamar
  • parameters (array) é uma lista de parâmetros que você está enviando para a função API
  • callId (string | int) é o Id usado para verificar se a saída retornada é para a mesma chamada de API

Exemplos

Supondo que o iframe de destino esteja no https://example.com, podemos enviar esta chamada API:

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

Isso chamará a função isConsentGiven() da API da Cookie Solution, sem parâmetros. A saída será retornada por meio da postMessage como uma string JSON.

Para que o evento message capture essa saída, você precisará de um ouvinte. Dependendo do estado atual da Cookie Solution, o ouvinte terá a seguinte aparência:

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

Exemplo com parâmetros

Veja como você pode passar parâmetros para sua chamada postMessage:

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

Essa chamada para a função storeConsent() será definida de consent para false e armazenará um cookie de consentimento.

Atualize a página para ver os efeitos desta chamada. Em seguida, você poderá verificar se o consentimento está definido como false, avaliando _iub.cs.consent.consent no console (deve resultar em false).

A postMessage da saída JSON deve ser semelhante a esta:

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

Exemplo de uma chamada postMessage malformada

A seguir, você verá a saída de uma chamada postMessage malformada (por exemplo, uma função de API que não existe):

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

Como não existe nenhuma função de API chamada Consent na Cookie Solution, consequentemente, você deverá obter um erro como este:

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

Veja também