No soy programador, pero sé que esto no debería ser demasiado difícil.
Actualmente estoy ejecutando este script en mi sitio para rastrear de dónde proviene el tráfico cuando compran a través de los enlaces de afiliados en mi sitio web:
<script> function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } return(""); } window.onload = function(){ var anchors = document.querySelectorAll('a[href*="https://example.com/c/215029/222"]'); Array.prototype.forEach.call(anchors, function (element, index) { element.href = "https://example.com/c/215029/222/?tid=" + getQueryVariable("tid"); }); } </script> Cuando alguien visita mi sitio con esta URL https://mywebsite.com/tid=facebook , el script anterior cambia el enlace específico en mi sitio web a https://example.com/c/215029/222/?tid=facebook
Mi pregunta es cómo cambiar el código para que pueda cambiar múltiples enlaces en mi sitio web para aceptar /?tid=facebook cuando agrego /?tid=facebook al final de la URL de los visitantes.
Digamos que también tengo un segundo enlace en mi sitio web https://example.com/c/215029/example2 que necesita adaptar /?tid=facebook para que se convierta en https://example.com/c/215029/example2/?tid=facebook
¿Qué debe cambiarse en el código anterior para que esto funcione?
espero haberme explicado correctamente
Considere la lógica del siguiente ejemplo:
function setUrlQuery(link, params) { console.log("[setUrlQuery]: INPUT URL # ", link); const url = new URL(String(link)); const se = new URLSearchParams(url.search); for (const [key, val] of Object.entries(params)) { se.set(key, val); } url.search = se.toString(); return url.toString(); } function delUrlQueryParam(link, ...par) { console.log("[delUrlQueryParam]: INPUT URL # ", link); const url = new URL(String(link)) const se = new URLSearchParams(url.search); if (par.length > 0) { par.forEach((val) => se.delete(String(val))); } url.search = se.toString(); return url.toString(); } // set new parametres if not exists const result = setUrlQuery("https://example.com/c/215029/example2/", { foo: "123", baz: "false" }); console.log("[setUrlQuery]: RESULT # ", result); // Update an existing values in the url query string. const result_2 = setUrlQuery(result, { tid: "facebook", foo: "0", baz: "true" }); console.log("[setUrlQuery]: RESULT # ", result_2); // Delete an existing values const result_3 = delUrlQueryParam(result_2, "foo", "baz"); console.log("[delUrlQueryParam]: RESULT # ", result_3);