Buongiorno, mi sembra chiaro il tuo ragionamento, ma ahimé, anche con il metodo load e la semplificazione del tuo ultimo script, la situazione non cambia, ovvero le localizzazioni si aprono solo aggiornando la pagina.
Buongiorno, mi sembra chiaro il tuo ragionamento, ma ahimé, anche con il metodo load e la semplificazione del tuo ultimo script, la situazione non cambia, ovvero le localizzazioni si aprono solo aggiornando la pagina.
Buongiorno, stesso problema col metodo load e lo script semplificato. Questo script con MutationObserver mi sembra invece funzionare, ma c'è lo zampino della mano artificiale, magari si può migliorare... link.
Non riesco però ad applicare lo stesso metodo per un altro script, anche questo funziona solo aggiornando la pagina. Vorrei semplicemente che su un popup venisse evidenziata la stringa "Biblioteca Elsa Morante".
Il percorso per arrivarci è questo:
Dalla pagina iniziale del portale inserisco per esempio "Umberto Eco" nel campo "Cerca nel catalogo".
Nella pagina successiva, quella con la lista dei risultati, clicco dal pannello a destra sotto:
"Naviga tra i risultati" > "Biblioteca" > "tutte" (cfr. screenshot).
Questo lo userscript che ho provato:
codice:(function() { 'use strict'; document.addEventListener('click', function(event) { var target = event.target; if (target.tagName === 'A' && target.textContent.trim() === 'tutte') { setTimeout(highlightTerm, 400); } }); function highlightTerm() { var elsaMoranteLink = document.querySelector("#faccette_tutte > div > ul > li.facet-rmbo2 > a"); if (!elsaMoranteLink) return; // Aggiungo una classe CSS per evidenziare l'elemento elsaMoranteLink.style.backgroundColor = 'yellow'; } })();
Grazie di nuovo!
Ultima modifica di Annuitcoeptis; 04-06-2024 a 09:41
BeneOriginariamente inviata da Annuitcoeptis
evidentemente, per qualche motivo, l'elemento in questione non risulta subito disponibile al load. Con MutationObserver in effetti puoi controllare quando l'elemento risulta essere disponibile.
Vedo però che qui non stai usando MutationObserver.Originariamente inviata da Annuitcoeptis
Ad ogni modo, da ciò che ho provato, il selettore "#faccette_tutte > div > ul > li.facet-rmbo2 > a" non corrisponde ad alcun elemento in quella pagina.
Il link "tutte" potrebbe invece essere selezionato con una cosa di questo tipo: "#wfaccettezone > details[data-group="BIBL"] > .facet-other > a".
Puoi chiarire?
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Grazie. il selettore "#faccette_tutte > div > ul > li.facet-rmbo2 > a" dovrebbe corrispondere a quello della stringa "Biblioteca Elsa Morante" (quando presente), nell'elenco delle biblioteche all'interno del popup che si apre dopo aver premuto su "tutte".
Non ho inserito il MutationObserver nel nuovo script in quanto sembrava non funzionare più. Domani farò altre prove, integrendo i tuoi suggerimenti.
Ultima modifica di Annuitcoeptis; 05-06-2024 a 08:06
Ok, perdonami non avevo compreso bene che l'elemento da cercare era quello nel popup, pensavo volessi eseguire invece il click automatico per il link "tutte".
Se l'intento è solo quello di "evidenziare" un certo elemento, potresti semplicemente includere al volo del CSS nella pagina in modo tale che, quando l'elemento sarà presente, risulti evidenziato.
Quando l'elemento invece non è presente, poco importa, resterà qualche riga di CSS inutilizzata ma questo è irrilevante ai fini pratici.
Se usi una estensione che permette di inserire direttamente del CSS per quella tale pagina, puoi applicare direttamente una roba del genere:
Se invece devi includere il CSS tramite script, puoi creare ed inserire un elemento style in head con una roba del genere (sempre che l'evento load funzioni come dovrebbe):codice:#faccette_tutte > div > ul > li.facet-rmbo2 > a { background-color: yellow; }
codice:(()=>{ window.addEventListener('load', ()=>{ const el = document.createElement('style'); el.type = 'text/css'; el.innerHTML = '#faccette_tutte > div > ul > li.facet-rmbo2 > a {background-color: yellow;}'; document.head.appendChild(el); }); })();
Prova e fai sapere
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Di nulla. Stesso problema col tuo script (inclusivo del CSS), funziona ma solo al refresh della pagina. Ho anche provato invano ad aggiungere un MutationObserver:
codice:const observer = new MutationObserver(mutations => { mutations.forEach(mutation => { if (mutation.addedNodes.length > 0) { const target = document.querySelector('#faccette_tutte > div > ul > li.facet-rmbo2 > a'); if (target) { const style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = '#faccette_tutte > div > ul > li.facet-rmbo2 > a {background-color: yellow;}'; document.head.appendChild(style); observer.disconnect(); } } }); }); observer.observe(document.body, { childList: true, subtree: true });
Ultima modifica di Annuitcoeptis; 06-06-2024 a 10:11
A questo punto ho l'impressione che dipenda dal tuo gestore di script, cosa usi al momento? magari controlla se puoi abilitare qualche impostazione con cui far eseguire lo script ad inizio pagina.
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Uso User JavaScrip and CSS, in effetti ora sembra funzionare anche senza cambiare impostazioni, boh! Grazie sempre per la tua disponibilità, KillerWorm! In caso di problemi ti aggiorno
Per esperienza personale, e come tu stesso hai accennato, consiglio di passare ad uno dei gestori della famiglia "Monkey" per tutti i tuoi script utente. In linea generale, rispetto ad altre estensioni del genere, ti permettono di avere una gestione a "livello più basso" degli script.Originariamente inviata da Annuitcoeptis
Chissà, forse un problema di cacheOriginariamente inviata da Annuitcoeptis
Figurati, mi fa piacere che alla fine abbia funzionato.Originariamente inviata da Annuitcoeptis
Alla prossima![]()
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum
Purtroppo utilizzo vari manager per gestire varie piattaforme o insiemi di script, come scrivevo al terzo post. Sembra che allo stato non ne esista uno gratuito che supporti i profili/cartelle. Buona giornata e di nuovo grazie!
Ultima modifica di Annuitcoeptis; 07-06-2024 a 08:38