En Administrador de etiquetas de Googleel Variable de JavaScript personalizada es un función anónima con un return
Declaración. No toma ningún parámetro y, por defecto, es imposible para pasarle cualquier parámetro, porque la variable Customized JS simplemente se resuelve en cualquier valor que devuelva la función. Si devuelve un número, por ejemplo, pasarle un parámetro no tendría sentido y daría como resultado un TypeError
ya que la variable se resuelve en un número, no en una función.
Sin embargo, en realidad puedes tener la variable devuelve una funciónPuedes usar esto para crear tu propio utilidadesque toman parámetros y, a su vez, devuelven un valor nuevo basado en los cálculos realizados con las variables.
Este no es un descubrimiento novedoso: las variables que devuelven funciones son la base de cómo funcionan las cosas. hitCallback
y customTask
Trabajo. En este artículo, explicaré un poco más lo que puedes hacer con estas variables de utilidad.
X
El boletín informativo de Simmer
Suscríbete a la Boletín informativo de Simmer ¡Para recibir las últimas noticias y contenidos de Simo Ahava en tu bandeja de entrada de correo electrónico!
Consejo 97: Crea utilidades con la variable JavaScript personalizada
A función cual devuelve una función Tiene muchos usos en JavaScript. A veces se le llama cierre porque tiene acceso al ámbito léxico de la función de envoltura incluso después de que esa función haya finalizado su ejecución.
En Google Tag Supervisor, usar la función como cierre no es necesariamente la mayor ventaja, porque las variables de JavaScript personalizadas están diseñadas para ser efímeras: simplemente procesan cosas dentro del alcance (por ejemplo, otras variables) y luego devuelven el resultado de este procesamiento.
Sin embargo, cuando usted devuelve una función que acepta parámetros en una variable de JavaScript personalizada, puede crear una utilidad que se puede invocar desde etiquetas HTML personalizadas y otras variables de JavaScript personalizadas sin tener que reescribir siempre el mismo código en todos los lugares donde necesita la utilidad.
Por ejemplo, digamos que desea crear un Cookie del navegador En una etiqueta HTML personalizada, tienes algunas opciones:
<script>
// Choice 1: Create a worldwide methodology
window._setCookie = perform(identify, worth, ms, path, area) {
if (!identify || !worth) {
return;
}
var d;
var cpath = path ? '; path=' + path : '';
var cdomain = area ? '; area=' + area : '';
var expires = '';
if (ms) {
d = new Date();
d.setTime(d.getTime() + ms);
expires = '; expires=' + d.toUTCString();
}
doc.cookie = identify + "=" + worth + expires + cpath + cdomain;
};
window._setCookie('someCookieName', 'someCookieValue');
// Choice 2: Straight name the doc.cookie API
doc.cookie = 'someCookieName=someCookieValue';
// Choice 3: Use a Customized JavaScript variable
{{Set Cookie}}('someCookieName=someCookieValue');
script>
Opción 1 También crea un método de utilidad, pero lo agrega al espacio de nombres international. Sí, esto tiene el beneficio adicional de estar disponible para todas sus etiquetas HTML personalizadas y variables JavaScript personalizadas, y en realidad cualquier otro script que se ejecutan en su sitio, incluso fuera de GTM. Suponiendo que estas otras etiquetas y scripts se ejecutan después el _setCookie
Se ha creado un método international con esta etiqueta.
La desventaja es que estás contaminando el espacio de nombres internationalEstás reservando una clave que podría ser sobrescrita o a la que podría acceder cualquier otro código JavaScript que se ejecute en el sitio. Si solo los scripts dentro de GTM necesitan este método, sería mejor que utilizaras otra solución.
opcion 2 Es easy, ya que no necesitas ninguna función, estás escribiendo directamente la cookie. Con el ejemplo anterior, es realmente la forma más sencilla de hacerlo. Sin embargo, tan pronto como necesites realizar algún procesamiento adicional, como determinar en qué dominio o ruta escribir la cookie o cuál debería ser su vencimiento, agregarás líneas y líneas de código, y todas estas líneas deben reescribirse en cualquier otra etiqueta en la que también quieras escribir una cookie.
Opción 3 De eso trata este artículo. En lugar de agregar el _setCookie
método en el ámbito international de la página, puede utilizar las variables de JavaScript personalizadas de Google Tag Supervisor para gestionar la lógica por usted. La variable se vería así:
perform() {
return perform(identify, worth, ms, path, area) {
if (!identify || !worth) {
return;
}
var d;
var cpath = path ? '; path=' + path : '';
var cdomain = area ? '; area=' + area : '';
var expires = '';
if (ms) {
d = new Date();
d.setTime(d.getTime() + ms);
expires = '; expires=' + d.toUTCString();
}
doc.cookie = identify + "=" + worth + expires + cpath + cdomain;
}
}
Como puedes ver, es casi lo mismo que Opción 1excepto que en lugar de asignar la función a una variable international, estás regresando en la variable JavaScript personalizada. Y como devuelve la función, puede invocarla con los parámetros identify, worth, ms, path, area
y haga que la función se encargue de escribir la cookie por usted.
Suponiendo que nombrarás esa variable de JavaScript personalizada como Establecer variable de cookieAsí es como lo invocarías desde una etiqueta HTML personalizada o una variable JavaScript personalizada:
{{Set cookie variable}}('cookieName', 'cookieValue', 100000, '/', 'simoahava.com');
Este es solo un ejemplo. También podrías…
-
Crear un Función hash SHA-256 (gracias Johan Terpstra para el enlace al código fuente), que encripta cualquier cadena que se le pase.
-
Crear utilidades simples como inversión de cadenas, comprobaciones de igualdad de matrices y convertidores.
-
Escribir devoluciones de llamadas para oyentes de eventos personalizados.
En resumen, una variable de JavaScript personalizada que devuelve una función es útil si desea…
-
Evitar contaminando el espacio de nombres international.
-
Evitar reescribiendo el mismo código una y otra vez. y/o c) Tener una cantidad de variables similares que hacen casi lo mismo..
-
Evitar Tener una cantidad de variables similares que hacen casi lo mismo..
El último punto es especialmente poderoso, ya que en lugar de tener cinco variables JavaScript personalizadas diferentes, podría usar una única variable JavaScript personalizada, que devuelva una función que tome un parámetro, y esta función luego devolvería uno de cinco resultados diferentes, dependiendo del parámetro.
Solo recuerda que solo puedes ejecutar JavaScript en dos contextos dentro de GTM: etiquetas HTML personalizadas y variables JavaScript personalizadas. Por lo tanto, no puedes agregar parámetros a una variable JavaScript personalizada en campos de etiquetas, activadores o variables normales.
¿Tiene alguna función de utilidad interesante que le gustaría compartir con los lectores?