Per il front-end Web, se sono caricati 20 file JavaScript, come rintracciare il gestore del mouseover?

1

Per la programmazione front-end Web, poiché qualsiasi JavaScript può impostare un listener di eventi per "mouseover" o "mouseenter" per un elemento, se vogliamo rintracciare qual è il codice responsabile della creazione di una casella di hover ?

Ad esempio, se lo vedi quando passi il mouse su un elemento, con la classe hover-box-cont , e tu grep per la base di codice esistente, e non c'è alcuna ricorrenza hover-box-cont che fa parte di JavaScript codice che sembra essere $(".hover-box-cont").mouseover() o mouseenter() (e in effetti non esiste alcun codice JS correlato a hover-box-cont ), allora quale è un buon modo per rintracciare qual è il codice che è responsabile di apparire? una casella al passaggio del mouse?

(Poiché la pagina è in parte in AngularJS, ho anche grep per hoverBox perché le direttive AngularJS utilizzano automaticamente il nome JS hoverBox per mappare a hover-box nell'HTML, ma non riesco a trovare nulla per hoverBox )

Un metodo che ho pensato è stato quello di impostare un listener (handler) su un elemento interno sull'evento mouseover , e impostare un punto di interruzione su quel codice di gestore, in modo che sia possibile "scavalcare" la riga di codice di linea per vedere quale linea di codice viene eseguita in seguito. Ma con mia sorpresa, quando uso un'altra app per coprire la regione e mostrare l'elemento su cui imposto un handler, e faccio scorrere il mouse su di esso e clic, l'elemento hover compare già prima del breakpoint sul mio gestore. Ho pensato che potrebbe in qualche modo esplodere dal mio elemento interiore, prima di andare in quella regione esterna per il conduttore che sto cercando di rintracciare.

Ci sono circa 20 file JavaScript esterni (alcuni locali, alcuni su CDN), quindi è difficile rintracciarli uno per uno, o cosa succederebbe se potessimo esaminarli tutti e 20 uno per uno, e se ci fossero 50 file JavaScript? Ci dovrebbe essere un modo migliore di leggere uno dopo l'altro quei 50 file JS?

    
posta 太極者無極而生 08.03.2016 - 12:50
fonte

1 risposta

4

Tre approcci che proverei che potrebbero funzionare, a seconda del codice e di come interagiscono i gestori e gli elementi;

In primo luogo, potresti provare a utilizzare gli strumenti di sviluppo di Chrome " Scheda Timeline ".

  • Fai clic su registra
  • Esegui la tua azione
  • Interrompi la registrazione
  • Analizza il risultato per vedere se il JS che ha causato la modifica dell'elemento può essere rintracciato

La seconda cosa che puoi provare (sempre in Chrome) è trovare l'elemento che cambia al passaggio del mouse nella scheda "Elementi".

  • Seleziona l'elemento che secondo te risponde al passaggio del mouse.
  • Nella parte destra degli strumenti di sviluppo c'è una scheda "Listener di eventi".
  • Deseleziona "Antenati"
  • controlla se il gestore è elencato per "mouseover".
  • Se non è elencato alcun gestore, scegli gli elementi parent e ricontrolla, spostando verso l'alto la gerarchia degli elementi.

Se trovi un gestore in questo modo, verrà elencato con un link che si sposta verso l'origine in cui è definito il gestore. Vai lì, imposta un punto di interruzione ed esegui di nuovo il mouseover. Quindi puoi tornare indietro alla traccia dello stack.

Terzo tentativo, che dovrebbe funzionare se il mouseover funziona manipolando una classe sull'elemento per causare la modifica.

  • Trova di nuovo l'elemento che cambia nella scheda "Elementi" degli strumenti di sviluppo.
  • Fai clic con il pulsante destro del mouse sull'elemento e seleziona "Interrompi ... > Modifiche agli attributi" e anche "Modifica sottostruttura"
  • Esegui il mouseover e verifica se il debugger dello script si ferma sulla modifica dell'elemento.

Se si ferma, sarà sulla linea di codice che ha cambiato l'elemento DOM, quindi dovrai tornare indietro nello stack per trovare l'origine della chiamata.

Modifica:

Se vuoi cercare nel testo tutti i file .js caricati, in Chrome apri gli strumenti di sviluppo nella scheda "Sorgenti". Premi shift+ctrl+f (su Windows. Non sai quale sia la chiave del Mac) che aprirà un input di ricerca che cercherà tra tutti i file di script caricati.

Speriamo che uno di questi aiuti. Buona fortuna!

    
risposta data 09.03.2016 - 04:03
fonte

Leggi altre domande sui tag