Как загрузить внешний скрипт при нажатии (после загрузки страницы) в режиме автоматической блокировки Cookiebot

Я использую Cookiebot в режиме автоматической блокировки.

В одном конкретном случае (встроенная шкала времени в твиттере) мне нужно делать что-то "вручную". Я хотел бы сделать следующее, независимо от выбора пользователя в баннере Cookiebot:

  1. показать кнопку "разрешить твиттер" в div-заполнителе
  2. при нажатии загрузите скрипт twitter и инициализируйте виджет временной шкалы

Если я принимаю маркетинговые и предпочтительные файлы cookie в баннере CB, следующее работает нормально, но если нет, вызов getScript блокируется.

<div class="twitter-wrap">twitter anchor element</div>

<script data-cookieconsent="ignore">
  // append a button to allow user to accept cookies
  $(".twitter-wrap").append('<div class="twitter-consent"><button class="twitter-consent-btn">Accept</button></div>');
  $(".twitter-consent-btn").on("click", function(){ 
    $(".twitter-consent").hide();
    $.getScript( "https://platform.twitter.com/widgets.js", function( data, textStatus, jqxhr ) {
      console.log( jqxhr.status ); // This is never executed
      twttr.widgets.load().then(function () {
        console.log('Embedded timeline.')
      });
    });
  });
</script>

Я также попытался заменить вызов getScript тем, что предлагается в twitter, где я также добавил флаг игнорирования в динамически сгенерированный скрипт), но безуспешно:

function append_twttrScript() {
    window.twttr = (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0],
            t = window.twttr || {};
        if (d.getElementById(id)) return t;
        js = d.createElement(s);
        js.setAttribute("data-cookieconsent", "ignore"); // Here I add an extra attribute
        js.id = id;
        js.src = "https://platform.twitter.com/widgets.js";
        fjs.parentNode.insertBefore(js, fjs);
        t._e = [];
        t.ready = function(f) {
            t._e.push(f);
            twttr.widgets.load().then(function (el) {
              console.log('Embedded a timeline.')
            });
        };
        return t;
        }(document, "script", "twitter-wjs"));
}

Насколько я понимаю, принцип работы data-cookieconsent="ignore" заключается в том, что он сначала выполняет скрипты с этим флагом один раз, а затем все блокирует?!

Возможно ли то, что мне нужно сделать, или мне нужно прибегнуть к ручной настройке cookiebot?

0 ответов

Другие вопросы по тегам