Przekonwertuj istniejący tag

Z tego przewodnika dowiesz się, jak przekonwertować istniejący niestandardowy tag HTML na używaj JavaScriptu w trybie piaskownicy.

W tym samouczku będzie używany interfejs API injectScript. injectScript to typowa odmiana Interfejs API używany do konwersji istniejącego tagu, który korzysta ze skryptów firm zewnętrznych. Te tagi często konfiguruje podstawowe funkcje podczas wczytywania skryptu, a następnie rozszerzają je o dodatkowe funkcje po wczytaniu skryptu.

Pierwotny tag

<!-- Google Analytics -->
<script>
  window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
  ga('create', 'UA-XXXXXX-1', 'auto');
  ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->

Konwertowanie kodu

Weź pod uwagę fragment kodu JavaScript w tagu powyżej:

window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-XXXXXX-1', 'auto');
ga('send', 'pageview');

Aby utworzyć niezbędny JavaScript w trybie piaskownicy, sprawdź, jaki natywny kod JavaScript interfejsów API, z których korzysta ten skrypt, i przekonwertuj swój kod na odpowiedniki w trybie piaskownicy API JavaScript.

Na przykład w tagu analytics.js używane są te natywne interfejsy API JavaScript:

Natywny kod JavaScript JavaScript w trybie piaskownicy
window.ga setInWindow
arguments createArgumentsQueue
+ new Date getTimestamp

Aby używać w skrypcie interfejsów API JavaScript w trybie piaskownicy, musisz je wykonać w skrypcie require. Aby na przykład korzystać z interfejsu API setInWindow(), dodaj go na początku skryptu:

const setInWindow = require('setInWindow');

Następnie przelicz window.ga:

window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)}
// becomes
const createArgumentsQueue = require('createArgumentsQueue');
const ga = createArgumentsQueue('ga', 'ga.q');

Następnie przekonwertuj projekt ga.l:

ga.l=+new Date;
// becomes
const getTimestamp = require('getTimestamp');
setInWindow('ga.l', getTimestamp(), true);

Na koniec przekonwertuj oba wywołania na ga():

ga('create', 'UA-XXXXXX-1', 'auto');
ga('send', 'pageview');
// becomes
const trackingId = data.trackingId;
ga('create', trackingId, 'auto');
ga('send', 'pageview');

Aby użyć szablonu data.trackingId, dodaj pole do szablonu:

  1. Otwórz kartę Fields i kliknij Add Field.

    Dodaj pole

  2. Wybierz typ pola Text input.

    Wybieranie pola tekstowego

  3. Zmień identyfikator z text1 na trackingId.

    Zaktualizuj identyfikator

Na tym etapie masz już przekonwertowany pierwszy tag <script/>, ale potrzebujesz też by wczytać skrypt pomocniczy.

Aby to zrobić:

<script async src='https://www.google-analytics.com/analytics.js'></script>
// becomes
const injectScript = require('injectScript');
const url = 'https://www.google-analytics.com/analytics.js';
injectScript(url, data.gtmOnSuccess, data.gtmOnFailure, url);

Przekazywanie cacheToken do injectScript() umożliwia optymalizację. W przypadku atrybutu w tych scenariuszach skrypt analytics.js zostanie wczytany tylko raz:

  • Tag uruchamiany wiele razy
  • Więcej niż 1 tag z tego szablonu niestandardowego w tym samym kontenerze.
  • Inne szablony niestandardowe, które korzystają z szablonu injectScript() z tym samym identyfikatorem cacheToken
.

Uprawnienia

Jeśli próbujesz uruchomić ten kod wcześniej, możesz zauważyć, w konsoli.

Błąd dostępu do globalnych zasobów

Te błędy pojawiają się, ponieważ JavaScript w trybie piaskownicy wymaga zadeklarowania używane wartości i adresy URL. W tym przykładzie potrzebujesz dostępu do: ga.q, ga.l i ga zmiennych globalnych, a chcesz dodać skrypt, który jest hostowany o https://www.google-analytics.com/analytics.js.

Aby skonfigurować uprawnienia funkcji Global Variables:

  1. Przejdź na kartę Permissions, Rozwiń Accesses Global Variables i i kliknij Add Key.

    Dodaj klucz w interfejsie

  2. Użyj klucza ga i zaznacz pola wyboru Read, Write i Execute

    Interfejs użytkownika klucza dodawania GA

  3. Powtórz ten proces dla elementów ga.q i ga.l. Pamiętaj, że te pola nie wymagają uprawnienia Execute.

    Gotowe zmienne globalne

Jeśli ponownie klikniesz Uruchom kod, w konsoli pojawi się nowy błąd. Tym razem błąd dotyczy: Inject Scripts.

Błąd wstrzykiwania skryptów

Aby skonfigurować uprawnienie Inject Scripts:

  1. Dodaj https://www.google-analytics.com/analytics.js do Allowed URL Match Patterns.

    Zakończono wstawianie skryptów

Teraz gdy klikniesz Uruchom kod, konsola nie powinna już zawierać błędów. Masz Tag został przekonwertowany na szablon niestandardowy. Kliknij Save. i używać go tak samo jak dowolnego innego tagu w Menedżerze tagów Google.

Tag w pełni skonwertowany

Końcowy wynik JavaScriptu w trybie piaskownicy powinien wyglądać tak:

const setInWindow = require('setInWindow');
const copyFromWindow = require('copyFromWindow');
const createArgumentsQueue = require('createArgumentsQueue');
const getTimestamp = require('getTimestamp');
const injectScript = require('injectScript');
const trackingId = data.trackingId;

const ga = createArgumentsQueue('ga', 'ga.q');
setInWindow('ga.l', getTimestamp(), false);
ga('create', trackingId, 'auto');
ga('send', 'pageview');
const url = 'https://www.google-analytics.com/analytics.js';
injectScript(url, data.gtmOnSuccess, data.gtmOnFailure, url);