Динамически загружать Диспетчер тегов Google и переключаться в SPA

Отдел маркетинга хочет разделить Диспетчер тегов Google по странам. Для обычного веб-сайта, а не SPA, мы можем легко сделать это на основе URL-адреса. Переключится ли клиент на другой URL-адрес, тогда страница будет обновлена, код страны будет добавлен в URL-адрес, и можно будет загрузить правильный GTM.

Теперь для SPA (в Angular, Typescript) это немного сложнее. В настоящее время у нас нет параметра языка / страны в этом приложении, но его можно изменить в любом случае во всем веб-приложении. Конечно, страница не обновлялась.

Я пытаюсь найти способ динамически загружать и выгружать скрипт GTM.

Я могу успешно загружать и выгружать элемент <script> в <head>, но менеджер тегов добавляет больше элементов.

public loadScriptSimple(country : string) {
    //first remove existing node
    var existing = document.getElementById("tagmanager");
    if (existing && existing.parentNode) {
        existing.parentNode.removeChild(existing);
    }
    //
    console.info('adding node to head...');
    let node = document.createElement('script');
    if (country === "NL") {
        node.textContent =
            "(function (w, d, s, l, i) {w[l] = w[l] ....(window, document, 'script', 'dataLayer', 'GTM-XXX');";
    } else {//todo for later loading others
        node.textContent =
            "(function (w, d, s, l, i) {w[l] = w[l] ....(window, document, 'script', 'dataLayer', 'GTM-YYY');";
    }

    node.type = 'text/javascript';
    node.async = true;
    node.charset = 'utf-8';
    node.setAttribute("id", "tagmanager");
    document.getElementsByTagName('head')[0].appendChild(node);
    console.info('loaded script');
}

Источник: https://stackoverflow.com/a/38473334/2901207

Таким образом, можно было бы загрузить его при первом запросе (например, при первом выборе страны на основе IP-адреса), но после изменения страны будут загружены два тега.

Есть ли простой способ удалить существующие элементы, а затем создать новые, как указано выше?

Вы когда-нибудь находили решение проблемы удаления дополнительных элементов, добавленных менеджером тегов?

Daniel Congrove 14.08.2019 21:06

Нет, я позвонил по этому поводу и сказал отделу маркетинга, что это невозможно. Единственный способ, которым это было бы возможно, - это вручную загрузить скрипты для конкретной страны. Только тогда можно удалить узел по имени или идентификатору.

CularBytes 16.08.2019 11:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
1 133
0

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