Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Click su link funziona su Chrome e Firefox ma non su Edge

    Buongiorno, da questa pagina (salvata):

    https://smartsite.w3spaces.com/lista_report.html

    ho uno script che autoclicca sul primo elemento (variabile) della lista "Descrizione"
    (nella fattispecie Stampa etichetta - inv. : 54842):

    codice:
    (() => {
      var links = document.querySelectorAll("a[href='#']");
      for(let i=0; i<links.length; i++)
    {
        var text = links[i].innerHTML;
        if(text.includes("Stampa etichetta")) {
           links[i].click();
    break;
        }
      }
    })();

    In Chrome e Firefox lo script funziona correttamente aprendo una finestra di stampa, ma in MS Edge per qualche misteriosa ragione ritorna alla pagina precedente, ovvero questa:

    https://smartsite.w3spaces.com/stampa.html

    Si può modificarlo e renderlo compatibile anche con Edge? Grazie!
    Ultima modifica di ciro78; 02-01-2023 a 21:34 Motivo: titolo

  2. #2
    Risolto, mancava il Timeout

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Ciao,
    sarebbe buona cosa pubblicare lo script funzionante qualora qualcuno avesse lo stesso problema.

    Saluti
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Come non scritto, mi ero illuso, continua a non funzionare su Edge.
    Ultima modifica di Annuitcoeptis; 02-01-2023 a 22:42

  5. #5
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    a me non funziona nemmeno su chrome in verità . resto sulla pagina
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  6. #6
    La pagina è ad accesso protetto, questa infatti è una copia salvata

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, magari non risolve ma, giusto per semplificare quello scriptino, io andrei ad aggiustare il selettore in modo da selezionare direttamente il primo elemento della lista evitando quindi l'inutile ciclo e la verifica del contenuto HTML:

    Dovrebbe essere sufficiente una cosa del genere:
    codice:
    const primoLinkDellaLista = document.querySelector('#lista td > a[href="#"]');
    if (primoLinkDellaLista) primoLinkDellaLista.click();

    Accertati solo che funzioni quanto prima e non interferisca eventualmente sulle altre pagine del sito, se lo script è eseguito indistintamente su tutte le pagine. Nel caso, presumo si possa comunque specificare maggiormente il selettore.

    Riguardo il problema in oggetto non è possibile dare delle risposte mirate riguardo le sole indicazioni che hai fornito. Potrei sbagliarmi ma non vedo delle particolarità per le quali dovrebbe funzionare diversamente su Edge.

    Magari le cause sono da ricercare altrove, ad esempio nello script che gestisce l'apertura della pagina di stampa.

    Per ora l'unico consiglio è quello di verificare nella console di Edge se non salta fuori qualche errore di script, altrimenti potresti provare a fare un minimo di debug con qualche opportuno console.log per capire cosa sta avvenendo; ad esempio verificare intanto se l'elemento selezionato è quello corretto, verificare poi gli eventuali listener applicati a quel click e così via.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Grazie! Anche il nuovo script semplificato viene eseguito correttamente in Chrome e Firefox (senza interferire con altre pagine), ma non in Edge... O meglio, dalla console di Edge viene eseguito correttamente (senza errori) e si apre una finestra. Ho pensato che il problema possa essere a questo punto l'estensione Autofill (anche se è strano che funzioni bene in Chrome), ho resettato i parametri e le altre regole, facendo eseguire solo questo script, ma il problema persiste. Ho provato ad eseguirlo anche da TamperMonkey, ma da qui non reagisce da nessun browser, anche aggiungendo un setTimeout di un secondo.
    Ultima modifica di Annuitcoeptis; 03-01-2023 a 10:53

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ripeto, è alquanto difficile darti aiuto se non si ha la situazione sotto mano.

    Prova a fare tu qualche verifica. Intanto, giusto per escludere ogni dubbio:
    in Edge, se NON esegui l'autoclick ma fai click manualmente su quel link, viene aperta la pagina corretta?

    Quote Originariamente inviata da Annuitcoeptis
    Ho provato ad eseguirlo anche da TamperMonkey, ma da qui non reagisce da nessun browser
    In questo caso devi assicurarti di aver impostato bene i metadata di intestazione, quantomeno @match che stabilisce l'indirizzo per il quale deve essere eseguito lo script.

    Quote Originariamente inviata da Annuitcoeptis
    dalla console di Edge viene eseguito correttamente (senza errori) e si apre una finestra
    Di default la console viene vuotata appena si apre una nuova pagina. Ti chiedo quindi se sei sicuro che non salti fuori qualcosa prima che sia aperta la pagina di destinazione.

    Hai impostato la console per mantenere il registro?
    La visualizzazione degli errori è attivata?

    Se provi a fare un log del genere (solo questo, senza eseguire alcun autoclick):
    codice:
    const primoLinkDellaLista = document.querySelector('#lista td > a[href="#"]');
    
    console.log(primoLinkDellaLista);
    su Edge viene selezionato l'elemento corretto?

    In tal caso, prova a verificare quali listener sono applicati per il click e confrontare se corrispondono anche su Chrome.

    Per fare questo devi agire direttamente dagli strumenti di sviluppo:
    - apri Edge
    - escludi qualsiasi script
    - apri la pagina con la lista
    - esamina l'elemento in questione (click dx > Esamina), viene aperto il pannello con la struttura del DOM
    - a fianco alla struttura hai un pannello con varie schede (Stili, Calcolati, Layout, Listener di eventi, ...)
    - apri la scheda "Listener di eventi" che mostra una lista di riferimenti alle funzioni applicate come listener su quell'elemento
    - verifica se e quali listener sono applicati per il click

    Dal momento che tutti quei link hanno un semplice href="#", deduco che l'azione di apertura della pagina di stampa (o di qualsiasi altra pagina) sia eseguita attraverso un qualche listener applicato chissà da quale script.

    - dovresti quindi vedere almeno un listener in quella lista
    - cliccando sul riferimento indicato si apre il relativo script in cui risiede la funzione

    Fai la stessa cosa in Chrome per capire quantomeno se la funzione è la stessa.

    A questo punto puoi cercare di capire cosa c'è in quella funzione per cui viene aperta una determinata pagina, ad esempio potresti trovare un location.href oppure viene forzato il submit del form in cui stanno quei link, o chissà quale altra cosa.

    La situazione potrebbe essere relativamente complessa a seconda di come è impostata. Può anche essere che trovi del codice minimizzato, che la funzione in sé non apra direttamente la pagina a cui punta il link, magari si passa attraverso varie altre funzioni, che la pagina aperta sia magari generica e la richiesta viene processata lato server prima di arrivare alla pagina di destinazione, e tante altre possibili variabili per cui non ti si può aiutare in maniera precisa senza poterci mettere direttamente mano.

    Intanto prova quanto indicato e fai sapere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Grazie, rispondo per punti:

    - Certo, al click manuale sul primo elemento della lista di stampa viene aperta la pagina in Edge, che è esattamente questa (originale):

    https://polormb.sebina.it/sebina/get...pdf?id=3875633

    - Sì in TamperMonkey avevo inserito l'URL in @match.
    - Questo il risultato della console mantenendo errori e registro: link
    - L'istruzione console.log seleziona l'elemento corretto, cfr. link.

    Ho confrontato gli event listener di Chrome ed Edge, al click sul primo elemento di stampa in entrambi si aggiunge questo elemento cerchiato in rosso, cfr. link. Cliccandoci si apre la stessa stringa che si apriva da console.log, cfr. link.

    Se può essere utile questo è invece il codice che si apre da Listener eventi > Click > Body: link.
    Ultima modifica di Annuitcoeptis; 03-01-2023 a 18:25

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.