Estoy trabajando en una variable de secuencia de comandos Java personalizada para que el administrador de etiquetas rastree la navegación de mi página. El script solo funciona para el primer elemento de este tipo debido a document.queryselect. document.queryselectAll naturalmente no está resolviendo el problema. Sería genial si pudieras ayudarme:
function(){ var elem = {{Click Element}}; var menu = document.querySelector("ul.nav.meta-nav.justify-content-end"); if(menu.contains(elem)){ return "nav_header"; }; var menu = document.querySelector("div.product-item"); if(menu.contains(elem)){ return "itemlist"; }; var menu = document.querySelector("a.btn"); if(menu.contains(elem)){ return "cta_button"; }; var menu = document.querySelector("footer.footer*"); if(menu.contains(elem)){ return "footer"; } return "other"; }Element.querySelectorAll() devuelve una lista de nodos. Es como una matriz. Así que un uso típico sería:
var elem = {{Click Element}}; document.querySelectorAll(selector).forEach(function(el) { if (el.contains(elem)) { return el.getAttribute("data-something"); } })function(){ var elem = {{Click Element}}; var type = "other" var selectors = { "ul.nav.meta-nav.justify-content-end" : "nav_header", "div.product-item" : "itemlist", "a.btn" : "cta_button", "footer.footer *" : "footer" } for (const [key, value] of Object.entries(selectors)) { var domMenu = document.querySelector(key) if(domMenu && domMenu.contains(elem)){ type = value }; } return type; }No puedo probar por mi parte, pero podría funcionar.
Solo asegúrese de que los selectores sean buenos y que el elemento de clic no caiga en más de un selector.