web-dev-qa-db-fra.com

Point d'arrêt juste avant l'actualisation de la page?

Je suis en train de déboguer du Javascript minifié tiers qui quelque part déclenche une actualisation de la page du navigateur. Cependant, je ne peux pas comprendre quelle partie du code provoque l'actualisation.

Existe-t-il un moyen de mettre un point d'arrêt dans Chrome qui sera atteint juste avant une actualisation de page afin que je puisse inspecter la pile d'appels pour voir ce qui l'a causé?

18
Thomas Johnson

Essaye ça:

  1. Ouvrez votre Chrome Dev Tools
  2. Accédez à l'onglet "Sources"
  3. Dans le panneau de droite, développez "Points d'arrêt du récepteur d'événements"
  4. Développez l'arborescence "Charger"
  5. Vérifiez les options beforeunload et unload

Voyez si cela aide; capture d'écran ci-dessous.

Chrome Dev Tools with Suggested Event Listener Breakpoints Checked

Edit: Alternativement, si cela ne fonctionne pas, vous pouvez utiliser Chrome pour rechercher tous les scripts chargés pour le code qui pourrait être responsable. Il y a apparemment beaucoup de façons d'actualiser le page avec JavaScript mais ils ont principalement quelques chaînes communes comme "navigateur", "emplacement", "recharger", "fenêtre".

Enfin, s'il existe un lien vers la même page que celle sur laquelle vous vous trouvez, il est possible que certains JS déclenchent un clic dessus - peu probable, mais mérite d'être exploré si rien d'autre n'a fonctionné jusqu'à présent ...

(Veuillez excuser le formatage car je suis sur mobile ...)

29
Alexander Nied

Dans Firefox (pas Chrome, c'est important) Developer Tools, allez dans la console, entrez addEventListener('beforeunload',()=>{debugger}), et exécutez votre code. Une fois que le débogueur s'arrête à l'instruction debugger, examinez la pile des appels. Vous verrez ce qui a déclenché l'événement. Chrome ne l'avait pas là.

Au moins, cela a fonctionné pour moi.

9
thorn̈

Dans le devtool, volet réseau, basculez le "Conserver le journal", vérifiez soigneusement la colonne de l'initiateur.

6
周长林

Vous ne spécifiez pas ce que fait la bibliothèque tierce. S'il s'agit d'un composant d'interface utilisateur comme une annonce ou quelque chose de similaire, placez-le simplement dans un iframe avec l'attribut sandbox configuré selon vos besoins . https: //developer.mozilla. org/en/docs/Web/HTML/Element/iframe (Faites défiler la page jusqu'à la section d'attribut sandbox)

S'il s'agit d'un événement déclenché par un événement, utilisez simplement (dans chrome uniquement) la fonction getEveneListener () et suivez la piste listener ... (difficile, mais possible ) Exemple:

enter image description here

La propriété d'écoute vous mènera aux fonctions réelles qui seront appelées. Vous pouvez alors les rechercher dans le code obscurci et ajouter un débogueur pour comprendre son objectif.

Il existe de nombreux autres scénarios - si vous pouvez en spécifier davantage.

2
fistuks