Intentando cambiar la URL según el dispositivo para un botón de Squarespace. Vale la pena mencionar que el elemento se crea dinámicamente.
Obtuve la búsqueda por clase para trabajar, ya que no pude hacer que la búsqueda por identificación o el selector de consultas funcionaran. El problema ahora es que la búsqueda por clase genera una lista de nodos y parece que no puedo obtener un bucle for para seleccionar correctamente el href.
Puede ser algún otro problema que desconozco.
Este es el código que he probado hasta ahora.
<div class="sqs-block button-block sqs-block-button" data-block-type="53" id="block-yui_3_17_2_1_1634189249286_8011"><div class="sqs-block-content" id="yui_3_17_2_1_1634205387553_330"> <div class="sqs-block-button-container--center" data-animation-role="button" data-alignment="center" data-button-size="small" id="yui_3_17_2_1_1634205387553_329"> <a href=“http:/google.com” class="sqs-block-button-element--small sqs-block-button-element" data-initialized="true">Learn more</a> </div> </div></div>
La clase del primer div es la encontrada por la búsqueda.
<script> let n = document.getElementsByClassName("sqs-block button-block sqs-block-button"); for(var i=0; i < n.length; i++) { n[i].addEventListener("click", function(e) { if(e.target && e.target.nodeName == "a") { console.log("item clicked"); } }); } </script>
Verifique su navigator.userAgent para ver si obtiene algún valor. Además, si su botón de descarga se carga dinámicamente, no se seleccionará así. Intente registrar en la consola el botón de descarga antes de su lógica if para ver el valor que obtiene.
Para apuntar a valores creados dinámicamente, marque Delegación de eventos: ¿Qué es la delegación de eventos DOM?
Encontré un freelancer en Upwork para terminar la tarea
< script src = "https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity = "sha256-u7e5khyithlIdTpu22PHhENmPcRdFiHRjhAuHcs05RI=" crossorigin = "anonymous" > < /script> < script > var operatingsystem = [{ name: 'iPhone', value: 'iPhone', version: 'OS' }, { name: 'iPad', value: 'iPad', version: 'OS' }, { name: 'Macintosh', value: 'Mac', version: 'OS X' }, ]; var requestHeader = [ navigator.platform, navigator.userAgent, navigator.appVersion, navigator.vendor, window.opera ]; function findDeviceOS(string, data) { var i = 0, j = 0, html = '', regex, regexv, match, matches, version; for (i = 0; i < data.length; i += 1) { regex = new RegExp(data[i].value, 'i'); match = regex.test(string); if (match) { regexv = new RegExp(data[i].version + '[- /:;]([\d._]+)', 'i'); matches = string.match(regexv); version = ''; if (matches) { if (matches[1]) { matches = matches[1]; } } if (matches) { matches = matches.split(/[._]+/); for (j = 0; j < matches.length; j += 1) { if (j === 0) { version += matches[j] + '.'; } else { version += matches[j]; } } } else { version = '0'; } return { name: data[i].name, version: parseFloat(version) }; } } return { name: 'unknown', version: 0 }; } var requestagent = requestHeader.join(' '); var operatingsystem = this.findDeviceOS(requestagent, operatingsystem); //unknown means user outside of apple device btn_link = 'https://apps.apple.com/us/app/rna-translation/id1508192093?ls=1' if (operatingsystem.name == 'unknown') { btn_link = 'https://android.com' } $(function() { $('#block-yui_3_17_2_1_1588401406921_37594 a').attr('href', btn_link); }); </script>