Interrompi javascript prima di un reindirizzamento javascript inline in Chrome


91

Sto visualizzando una pagina che ha un javascript redirect ( window.location = "/anotherpage") inline . Voglio caricare la pagina in Chrome ma ho la linea di reindirizzamento disabilitata, così posso utilizzare la pagina senza essere reindirizzato.

Ecco cosa ho provato:

  • Strumenti per sviluppatori -> Cog -> Generale -> Disabilita JavaScript. Carica la pagina. Non reindirizza (yay!). Ma voglio ancora che il resto del javascript della pagina venga eseguito, e non è così.

  • Digita l'URL, quindi fai clic su Strumenti per sviluppatori -> Fonti -> Pausa (F8) molto velocemente! Non è stato ancora reindirizzato (yay!) Ora voglio disabilitare la riga di reindirizzamento prima di riattivare, ma quella parte non è stata ancora caricata negli Strumenti per sviluppatori. Quindi inizierò a scorrere gli altri file codice javascript fino a quando non ci arrivo ?? Ma non appena esco dagli altri file javascript, reindirizza immediatamente (doh!).

Può essere fatto? Ho pensato che dovrebbe essere facile disabilitare una riga di javascript, ma sono perplesso.

Risposte:


142

Strumenti per sviluppatori -> Sorgenti -> Punti di interruzione del listener di eventi (sulla barra laterale destra) -> Carica -> seleziona Scarica

Questo renderà il debugger interrotto all'evento di scaricamento inviato prima della navigazione.


2
Un altro grazie per la risposta di lavoro. Sarei interessato a sapere perché così tanti voti positivi sul messaggio "questo non funziona"; era un problema con le versioni precedenti di Chrome? Qualcuno per il quale non ha funzionato può fornire maggiori informazioni?
Christian Rondeau

8
Inizialmente ero molto felice di vedere questa risposta ma posso confermare che non funziona per me (anche se ho controllato unload come suggerito, il reindirizzamento della pagina avviene ancora e non ho la possibilità di impostare punti di interruzione nei sorgenti della pagina UN). Forse ha a che fare con il modo in cui la prima pagina "reindirizza"? Nel mio caso la pagina A (la pagina di cui sto provando a eseguire il debug di javascript) esegue un POST (tramite javascript) alla pagina B.
Emil G

17
funziona bene, il problema è che lo stack di chiamate è vuoto, quindi non è molto utile, poiché non sarai in grado di vedere cosa ha effettivamente attivato il reindirizzamento
Eugene Kuzmenko

8
@EugeneKuzmenko seriamente, non so come questo stia effettivamente aiutando qualcuno
Will P.

1
Funziona solo se la pagina ha un gestore unload o beforeunload in cui il debugger può arrestarsi. Se nessun gestore di questo tipo è registrato, il debugger non si attiverà.
Tremotino

42

Eseguire le seguenti operazioni

  1. Apri Strumenti per sviluppatori
  2. Vai alla scheda Fonti
  3. Cerca i punti di interruzione del listener di eventi
  4. Espandere l' opzione Carica
  5. Qui seleziona l' opzione di scaricamento

Chrome scarica il punto di interruzione


@ TomBrito quando durante la pausa prima del download (che ho dovuto usare per schivare qualche stupido paywall di giornale), posso ispezionare gli elementi. Non puoi ispezionare quando scarichi? Sono su Chrome 71.0.3578.98.
linkD

12

Ho una libreria JS di terze parti, che ha avuto una condizione sbagliata per ricaricare la pagina. E la pagina è stata ricaricata continuamente per questo motivo. Ho provato a trovare dove si trova il codice sbagliato.

Ho provato a utilizzare il metodo "Event Listener Breakpoints", ma come diceva un commento non hai traccia dello stack negli eventi di scaricamento, quindi è abbastanza inutile.

La soluzione che ha funzionato per me: ho creato una pagina con un tag iframe con attributo sandbox, ad es. <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>E ho inserito il mio sito in essa. In questo modo si verificheranno errori di sicurezza all'interno di Chrome e la console mostra dove il JS tenta di accedere all'oggetto posizione. Puoi fare clic su di esso e vedere il codice. La cosa migliore è che Chrome ha un decompressore JS (il pulsante {} in basso a sinistra della finestra sorgente), che è intelligente, può mostrare la riga anche dopo una bella stampa, quindi puoi vederlo anche in JS compresso.

Maggiori informazioni sulla proprietà sandbox: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox


Funziona solo se il codice (in top.location = "..."location = "..."
quell'iframe
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.