Modificar el href de un enlace si hay parámetros en la URL y salvarlo en una cookie para posteriores accesos

Ilustración modificación href con parámetro URL
Ilustración modificación href con parámetro URL

¿Necesitas modificar el href de un enlace en tu html según un parámetro en la URL?

¿Y ya que lo cambias, lo deseas dejar guardado en una cookie para cuando el visitante vuelva?

En mi empresa hemos mandado un mail con una promoción a la que se accede con un enlace personalizado con un token en la url.
La casuística es que en la landing de destino, el enlace para acceder a dicha promoción es genérico, a no ser que vengas de este mail, en cuyo caso se personaliza.

Esta personalización la he hecho con una función javascript + jquery

No es compleja, pero la dejo aquí como chuleta para quien le sirva:

//Función para leer parámetros de la url
function getUrlParameter(sParam){
  var sPageURL = window.location.search.substring(1);
  var sURLVariables = sPageURL.split('&');
  for (var i = 0; i < sURLVariables.length; i++) 
  {
    var sParameterName = sURLVariables[i].split('=');
    if (sParameterName[0] == sParam) 
    {
      return sParameterName[1];
    }
  }
} 

//Función para añadir cookie
function setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+d.toUTCString();
  document.cookie = cname + "=" + cvalue + "; " + expires;
}

//Función para leer cookie
function getCookie(cname) {
  var name = cname + "=";
  var ca = document.cookie.split(';');
  for(var i=0; i<ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1);
    if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
  }
  return "";
}

//Función para cambiar el enlace si hay datos de token
function changeUrl(tok){
  var enlTok = "http://www.example.com/?token="+ tok;
  $("a[href='http://www.example.com']").attr('href', enlTok);
}

//chequear parametro url y/o cookie y si es positivo cambia el enlace
$('document').ready(function(){
  var tok = getUrlParameter('token');
  if (tok){
    setCookie("tokCook", tok, 60);
    changeUrl(tok);
  }
  else if (getCookie("tokCook")!=""){
    var tok = getCookie("tokCook")
    changeUrl(tok);
  }
});

 

Votar
[Total: 1 Media 5]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *