uncaught tag site que not insertar gtag google como codigo javascript google-analytics code-golf

javascript - site - gtag.js wordpress



Async Google Analytics (9)

Desafortunadamente, esto puede no ser una pregunta válida de Code-Golf, ya que probablemente solo sea Javascript; sin embargo, dado que es probable que este sea el único concurso de golf de código útil en el mundo real, voy a seguir adelante y publicarlo.

El fragmento de seguimiento asíncrono de Google Analytics es utilizado por muchos sitios web.

El guión va un poco como esto:

<script type="text/javascript"> var _gaq = _gaq || []; _gaq.push([''_setAccount'', ''UA-XXXXX-X'']); _gaq.push([''_trackPageview'']); (function() { var ga = document.createElement(''script''); ga.type = ''text/javascript''; ga.async = true; ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js''; var s = document.getElementsByTagName(''script'')[0]; s.parentNode.insertBefore(ga, s); })(); </script>

El ganador estará determinado por el código comprimido RAW DEFLATE más corto (hay una diferencia entre el código comprimido HTTP 1.1 DEFLATE (también conocido como zlib) y RAW DEFLATE) que cargará e inicializará Async Google Analytics en una página.

En el caso de un empate, el ganador será determinado por el recuento de caracteres en bruto. Si aún tenemos un empate, decidiremos por la última edición / hora de envío.

Algunas reglas:

  • El gaq || [] gaq || [] control no es obligatorio y debe eliminarse.
  • debe ser un protocolo "consciente" (http vs https).
  • no debe contaminar el espacio de nombres global (excepto la var _gaq ).
  • debe poder copiarse en cualquier documento (X) HTML, es decir, no depende del marcado de la página.
  • Debe funcionar en todos los navegadores A-Grade .
  • Esto NO tiene que pasar JSLINT ni ningún validador de HTML.
  • debe establecer la bandera async .
  • debe usar este deflactor para el conteo de bytes de la salida comprimida desinflada.

Propina:

  • Comprender los conceptos básicos del algoritmo DEFLATE . Y lo más importante, la compresión LZ77.

UDPATE 216/275

Ya que mi versión original ha sido mejorada, seguiré adelante y la publicaré aquí:
Nota: esto tiene un error donde async se establece en falso para todas las solicitudes "http"

(function(d,t,g){_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];g=d.createElement(t);g.src=(g.async=location.protocol[5]?"//ssl":"//www")+".google-analytics.com/ga.js";(t=d.getElementsByTagName(t)[0]).parentNode.insertBefore(g,t)})(document,"script")


Actualizado con versiones probadas en FF3.6, Opera10, Chrome6, MSIE8:

194/270 : con async, con getElementsByTagName en caché

(_gaq=document.createElement("script")).src=(/^....s/.test(location)?"//ssl":"//www")+".google-analytics.com/ga.js",(_gaq.a=_gaq.async=document.getElementsByTagName("script")[0]).parentNode.insertBefore(_gaq,_gaq.a),_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]]

192/297 : con async, sin caché

(_gaq=document.createElement(''script'')).src=(/^....s/.test(location)?''//ssl'':''//www'')+''.google-analytics.com/ga.js'',_gaq.async=document.getElementsByTagName(''script'')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName(''script'')[0]),_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]

189/259 : no async, con getElementsByTagName en caché

(_gaq=document.createElement(''script'')).src=(/^....s/.test(location)?''//ssl'':''//www'')+''.google-analytics.com/ga.js'',(_gaq.a=document.getElementsByTagName(''script'')[0]).parentNode.insertBefore(_gaq,_gaq.a),_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]

188/286 : sin async, sin caché

(_gaq=document.createElement(''script'')).src=(/^....s/.test(location)?''//ssl'':''//www'')+''.google-analytics.com/ga.js'',document.getElementsByTagName(''script'')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName(''script'')[0]),_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]

184/242 , sin async, appendChild (no se necesita caché), se desconoce si se admite en todas partes

(_gaq=document.createElement(''script'')).src=(/^....s/.test(location)?''//ssl'':''//www'')+''.google-analytics.com/ga.js'',document.getElementsByTagName(''script'')[0].parentNode.appendChild(_gaq),_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]

Créditos :

  • casablanca : /^https/.test( ubicación)
  • matyr : ruta relativa, comas entre sentencias, asignación a async
  • some : no hay función anónima y uso de _gaq, no caché de getElementsByTagName, mover asignación de async, /^....s/
  • David Murdoch drop type="text/javascript"

Además, cambiar '' a " puede mejorar la compresión en su fuente HTML si usa " " para citar atributos de etiqueta.

Ver comentarios en esta publicación para más información.

Como esta publicación ahora es wiki de la comunidad y la respuesta aceptada, eliminé mis primeros intentos (puede encontrarlos en el historial de revisiones si está interesado) y solo puedo ver las últimas revisiones. Vea los comentarios en esta publicación para más información. / some


Este es probablemente mi mejor intento, considerando mi inexperiencia con Javascript. No hay mucho que hacer aquí:

_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]; (function(d,e){e=d.createElement(''script'');e.id=''s'';e.async=1; e.src=''http''+(''s''==d.location.protocol[5]?''s://ssl'':''://www'')+''.google-analytics.com/ga.js''; d=d.getElementByTagName(''script'');d.parentNode.insertBefore(e,d);})(document);

EDITAR

Se han corregido los errores que algunos han hablado.

Longitud desinflada: 219 bytes.
Longitud original: 285 bytes


Este rompe algunas reglas, pero es el más corto hasta ahora y lo que uso, 165/196 (16%) :

_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]+function(d,e,s){d[''get''+e+''sByTagName''](s)[0].appendChild(d[''create''+e](s)).src =''//google-analytics.com/ga.js''}(document,''Element'',''script'')

Algunas notas:

  • No establece un atributo asíncrono, pero se considera asíncrono en los navegadores modernos .
  • No reescribe la URL según el protocolo actual, pero debería funcionar en sitios seguros, ya que utiliza la URL relativa al protocolo (no soy un experto, pero estoy abriendo https://google-analytics.com/ga.js en mi navegador me da un ícono de candado verde)
  • Descubrí que no es inteligente colocar el script al final del documento y omitir </script></body></html> para masticar unos pocos bytes, el script nunca se evalúa.
  • Estoy seguro de que si alguien es lo suficientemente dedicado y mágico, incluso esto puede hacerse más corto ;-)

Un formato más legible:

_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']] +function(d,e,s){ d[''get''+e+''sByTagName''](s)[0] .appendChild(d[''create''+e](s)) .src =''//google-analytics.com/ga.js'' }(document,''Element'',''script'')


Esto podría ser trampa aunque técnicamente obedece todas las reglas. ;)

<script>var _gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];</script><script src="//www.google-analytics.com/ga.js" async></script>


Primer intento, crédito por las ideas para todos aquí.

200/253 (no sé cómo optimizar para desinflar ... lo único que hice fue cambiar los nombres de las variables)

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],function(e,t){(c=e.createElement(t)).async=c.src=(/s:/.test(location)?"//ssl":"//www")+".google-analytics.com/ga.js";(e=e.getElementsByTagName(t)[0]).parentNode.insertBefore(c,e)}(document,"script")

195/258 ¿No usar (documento, "script") ayuda?

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],function(){(e=document.createElement("script")).async=e.src=(/s:/.test(location)?"//ssl.":"//")+"google-analytics.com/ga.js";(t=document.getElementsByTagName("script")[0]).parentNode.insertBefore(e,t)}()

Para el código más pequeño posible, ni siquiera necesita el "ssl". y "www." prefijos Esto todavía encaja dentro de las regulaciones de la competencia ...

175/216

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],function(e,t){(a=e.createElement(t)).async=a.src="//google-analytics.com/ga.js";(e=e.getElementsByTagName(t)[0]).parentNode.insertBefore(a,e)}(document,"script")

174/224 Y la segunda y tercera optimizaciones combinadas ...

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],function(){(e=document.createElement("script")).async=e.src="//google-analytics.com/ga.js";(t=document.getElementsByTagName("script")[0]).parentNode.insertBefore(e,t)}()

Editar: usando la expresión regular / s: / ahora, y más ...

194/266 Aparentemente, reutilizar _gaq ayuda ...

(_gaq=document.createElement("script")).async=_gaq.src=(/s:/.test(location)?"//ssl":"//www")+".google-analytics.com/ga.js",(_gaq._=document.getElementsByTagName("script")[0]).parentNode.insertBefore(_gaq,_gaq._),_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]]

166/229 y sin "ssl" y "www" ...

(_gaq=document.createElement("script")).async=_gaq.src="//google-analytics.com/ga.js",(_gaq._=document.getElementsByTagName("script")[0]).parentNode.insertBefore(_gaq,_gaq._),_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]]


Actualizado de acuerdo con las reglas actualizadas:

Incluyendo las etiquetas <script> : La longitud desinflada es: 226 bytes. La longitud original es de 298 bytes.

Sin las etiquetas <script> : la longitud desinflada es: 216 bytes. La longitud original es de 281 bytes.

<script>_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']];(function(d,g){g=d.createElement(''script'');g.async=true;g.src=''http''+(/^https/.test(location)?''s://ssl'':''://www'')+''.google-analytics.com/ga.js'';d=d.getElementsByTagName(''script'')[0];d.parentNode.insertBefore(g,d);})(document);</script>

Lanzar las ideas de @ some (solo comprobar la location[4] y usar 1 para ver si es true ) guarda 4 bytes más (212), pero no puedo reconocerlo.


(1) primer intento

_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']],function(s,g){g=document.createElement(s),g.async=g.src=(/^https/.test(location)?''//ssl.'':''//'')+''google-analytics.com/ga.js'',s=document.getElementsByTagName(s)[0],s.parentNode.insertBefore(g,s)}(''script'')

La longitud desinflada es: 199 bytes. El largo original es: 259 bytes. 23.17% de ahorro.

(2) (1) + algunos son 4

_gaq=document.createElement(''script''),_gaq.async=_gaq.src=(/^https/.test(location)?''//ssl.'':''//'')+''google-analytics.com/ga.js'',document.getElementsByTagName(''script'')[0].parentNode.insertBefore(_gaq,document.getElementsByTagName(''script'')[0]),_gaq=[[''_setAccount'',''UA-XXXXX-X''],[''_trackPageview'']]

La longitud desinflada es: 192 bytes. La longitud original es de 297 bytes. 35.35% de ahorro.


183/223 (17.94%) - asíncrono, consciente del protocolo, sin contaminación del espacio de nombres

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],function(a,b,c,d){a["get"+b+"sByTagName"](c)[0].parentNode.appendChild(d=a["create"+b](c),d.src=d.async="//google-analytics.com/ga.js",d)}(document,"Element","script");

185/228 (18.86%) - asíncrono, consciente del protocolo, sin contaminación del espacio de nombres (con las variables d y e )

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],function(b,a,c){d=a["create"+b](c),d.async=d.src="//google-analytics.com/ga.js",e=a["get"+b+"sByTagName"](c)[0],e.parentNode.insertBefore(d,e)}("Element",document,"script");

186/233 (20.17%) - asíncrono, consciente del protocolo, sin contaminación del espacio de nombres

_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]],(function(a,b,c,d,e){d=a["create"+b](c),d.async=d.src="//google-analytics.com/ga.js",e=a["get"+b+"sByTagName"](c)[0],e.parentNode.insertBefore(d,e)})(document,"Element","script")

Funciona en Chrome, Firefox, IE 7+, Opera y Safari.


(function(d,l,t,g){_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(g=d.createElement(t)).src=(l[5]?"ssl.":"")+"google-analytics.com/ga.js";g.async=1;(t=d.getElementsByTagName(t)[0]).parentNode.appendChild(g,t)})(document,location.protocol,"script")

La longitud desinflada es: 206 bytes. La longitud original es de 256 bytes. 19.53% de ahorro.

vs no async:

(function(d,l,t,g){_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(g=d.createElement(t)).src=(l[5]?"ssl.":"")+"google-analytics.com/ga.js";(t=d.getElementsByTagName(t)[0]).parentNode.appendChild(g,t)})(document,location.protocol,"script")

La longitud desinflada es: 199 bytes. La longitud original es de 246 bytes. 19,11% de ahorro.

-

un poco más corto sería esto:

var d=document,t="script",g;_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(g=d.createElement(t)).src=(location.protocol[5]?"ssl.":"")+"google-analytics.com/ga.js";g.async=1;(t=d.getElementsByTagName(t)[0]).parentNode.appendChild(g,t)

La longitud desinflada es: 196 bytes. La longitud original es de 242 bytes. 19.01% de ahorro.

vs no async:

var d=document,t="script",g;_gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]];(g=d.createElement(t)).src=(location.protocol[5]?"ssl.":"")+"google-analytics.com/ga.js";(t=d.getElementsByTagName(t)[0]).parentNode.appendChild(g,t)

La longitud desinflada es: 188 bytes. La longitud original es de 232 bytes. 18,88% de ahorro.

-

188 bytes desinflados y 232 bytes originales es tan corto como puedo ir ...;)