Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Szukam _ Dwa wykonania skryptów dla jednego skryptu

Napisany przez: Blasius 7.09.2021, 21:52:54

Ponieważ kompletnie nie znam Javascriptu to proszę o banalną pomoc.
Ze strony:
http://php.net/https://www.dareboost.com/en/report/(przetwarzane i wykonywane 2 razy)"
Większość nowoczesnych przeglądarek internetowych pobiera tylko raz skrypt dołączony 2 razy. Utrzymuje się wyjątek: Firefox, który ładuje zasób tyle razy, ile wspomniano, jeśli nie skonfigurowano skutecznej polityki buforowania.
Istnieje rozwiązanie polegające na wielokrotnym użyciu skryptu bez parsowania i wielokrotnego wykonywania. Musisz napisać kod JavaScript, który sprawdzi, czy skrypt jest obecny. Jeśli skrypt jest już dołączony, po prostu go używa, w przeciwnym razie wstrzymuje go i używa.
Pogrubiona linia sprawdza obecność skryptu w dokumencie. Skrypt jest więc dołączany, analizowany i wykonywany tylko podczas pierwszego wywołania na stronie. Inne wywołania będą wypadać w przypadku pogrubionej linii, a zatem po prostu użyją skryptu, który jest już dołączony i wykonany.

I podany został z widżetem Facebooka:

  1. <http://december.com/html/4/element/script.html>
  2. (function(d, s, id){
  3. var js, fjs = d.getElementsByTagName(s)[0];
  4. if (d.getElementById(id)) {return;}
  5. js = d.createElement(s); js.id = id;
  6. js.src = "//connect.facebook.net/en_US/sdk.js";
  7. fjs.parentNode.insertBefore(js, fjs);
  8. }(document, 'script', 'facebook-jssdk'));
  9. </http://december.com/html/4/element/script.html>

Podany został link do artykułu o tym problemie:
http://php.net/https://calendar.perfplanet.com/2014/the-pain-of-duplicate-scripts/?
Chyba, że istnieje jakiś prostszy sposób?

Napisany przez: com 9.09.2021, 13:06:09

Pokaz jak ładujesz swój kod GA bo powinien wyglądać tak:

[JAVASCRIPT] pobierz, plaintext
  1. <script>
  2. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  3. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  4. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  5. })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
  6.  
  7. ga('create', 'UA-XXXXX-Y', 'auto');
  8. ga('send', 'pageview');
  9. </script>
[JAVASCRIPT] pobierz, plaintext



Napisany przez: Blasius 9.09.2021, 20:19:41

Poniżej są moje wszystkie skrypty Googletagmanager:

[JAVASCRIPT] pobierz, plaintext
  1. <!-- Global site tag (gtag.js) - Google Analytics -->
  2. <script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-X"></script>
  3. <script>
  4. window.dataLayer = window.dataLayer || [];
  5. function gtag(){dataLayer.push(arguments);}
  6. gtag('js', new Date());
  7.  
  8. gtag('config', 'UA-XXXXXXXXX-X');
  9. gtag('set', {'user_id': 'UA-XXXXXXXXX-X'});
  10. </script>
  11. <!-- Google Tag Manager -->
  12. <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  13. new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  14. j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  15. 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  16. })(window,document,'script','dataLayer','GTM-YYYYYYY');</script>
  17. <!-- End Google Tag Manager -->
  18. <!-- Google Tag Manager (noscript) -->
  19. <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-YYYYYYY"
  20. height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  21. <!-- End Google Tag Manager (noscript) -->
[JAVASCRIPT] pobierz, plaintext

I do tego 2 linki:
<link rel="preconnect" href="https://www.googletagmanager.com" />
<link rel="preconnect" href="https://www.google-analytics.com" />

Tego podanego przez Ciebie nie mam.
Czy jego brak coś zmienia?

Napisany przez: trueblue 9.09.2021, 21:34:01

Z tego co widzę, to używasz tagu gtag.js oraz GTM. Musisz zdecydować się na jeden z nich.

Napisany przez: com 10.09.2021, 12:30:24

tak jak @trueblue napisał musisz uzywac jednego to po pierwsze, po drugie dziś Google już zmieniło ładowanie GA na ten kod co pokazałem, tak jak Ty masz robiło się to kiedyś dawno wink.gif ale skoro masz gtm to nim ląduj ga najlepiej smile.gif

Napisany przez: Blasius 24.09.2021, 14:15:32

Dzięki za odpowiedzi!
Jak rozumiem powinienem zostawić tylko

[JAVASCRIPT] pobierz, plaintext
  1. <!-- Google Tag Manager -->
  2. <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  3. new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  4. j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  5. 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  6. })(window,document,'script','dataLayer','GTM-YYYYYYY');</script>
  7. <!-- End Google Tag Manager -->
  8. <!-- Google Tag Manager (noscript) -->
  9. <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-YYYYYYY"
  10. height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  11. <!-- End Google Tag Manager (noscript) -->
[JAVASCRIPT] pobierz, plaintext

Pozostanie tylko ten drugi http://php.net/id=GTM-YYYYYYY?
Ten id http://php.net/GTM
Jak mam zatem ładować GA za pomocą GTM?
Chyba nie można nic dodawać do ich skryptu?

[JAVASCRIPT] pobierz, plaintext
  1. <!-- Google Tag Manager -->
  2. <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  3. new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  4. j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  5. 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  6. })(window,document,'script','dataLayer','GTM-YYYYYYY');</script>
  7. <!-- End Google Tag Manager -->
  8. <!-- Google Tag Manager (noscript) -->
  9. <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-YYYYYYY"
  10. height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
  11. <!-- End Google Tag Manager (noscript) -->
[JAVASCRIPT] pobierz, plaintext


Można prosić o podpowiedź?

Napisany przez: trueblue 24.09.2021, 17:31:15

Hop, hop, a masz Google? Skoro znalazłeś "gdzieś" powyższą informację, to może znalazłeś też: https://www.grupa-tense.pl/blog/google-tag-manager-praktyczny-poradnik/

Napisany przez: Blasius 24.09.2021, 18:08:02

Dzięki!
Akurat tej strony nie znalazłem.
Świetny poradnik. Sorry za gapiostwo... facepalmxd.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)