Точка останова перед обновлением страницы?

Я отлаживаю некоторый сторонний миниатюрный Javascript, который где-то запускает обновление страницы браузера. Однако я не могу понять, какая часть кода вызывает обновление.

Есть ли способ установить точку останова в Chrome, которая будет удалена непосредственно перед обновлением страницы, чтобы я мог проверить стек вызовов, чтобы узнать, что вызвало его?

Ответ 1

Попробуй это:

  1. Откройте инструменты Chrome Dev
  2. Перейдите на вкладку "Источники"
  3. На правой панели разверните "Контрольные точки прослушивателя событий",
  4. Разверните дерево "Загрузить"
  5. Проверьте beforeunload и unload параметры

Посмотрите, помогает ли это; снимок экрана ниже.

Chrome Dev Tools with Suggested Event Listener Breakpoints Checked

Изменение: альтернативно, если это не сработает, вы можете использовать Chrome для поиска всех загруженных сценариев для кода, который может быть ответственным. По-видимому, существует много способов обновить страницу с помощью JavaScript, но в основном они имеют несколько общих строк, таких как "навигатор", "местоположение", "перезагрузка", "окно".

Наконец, если есть ссылка на ту же страницу, на которой вы находитесь, возможно, какой-то JS запускает клик на it-- маловероятным, но стоит изучить, если до сих пор ничего не работало...

(Пожалуйста, извините форматирование, поскольку я нахожусь на мобильном телефоне...)

Ответ 2

В сетевой панели devtool, переключите "журнал сохранения", внимательно проверьте столбец инициатора.

Ответ 3

Вы не указываете, что делает сторонняя библиотека. Если это компонент ui, например объявление или что-то подобное, просто поместите его в iframe с атрибутом sandbox настроенным по мере необходимости. https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe (прокрутите вниз до раздела атрибута песочницы)

Если это что-то, вызванное событием, просто используйте (только в инструментах хром-dev) функцию getEveneListener() и следуйте за цепочкой listener... (сложно, но возможно) Пример:

enter image description here

Свойство listenener приведет вас к действительным функциям, которые будут вызываться. Вы можете искать их в запутанном коде и добавлять отладчик, чтобы понять его цель.

Есть много других сценариев - если вы можете указать больше.

Ответ 4

В Firefox (а не в Chrome важно) инструменты разработчика, перейдите на консоль, введите addEventListener('beforeunload',()=>{debugger}) и выполните свой код. После того как отладчик остановится в инструкции debugger, посмотрите на стек вызовов. Вы увидите, что вызвало событие. У Chrome его не было.

По крайней мере, это сработало для меня.

Ответ 5

перейдите в Chrome> Inspect Element> Source> Выберите свой миниатюрный файл Javascript (Donot забыл нажать на {} вариант для лучшего понимания, нажмите ссылку ниже для скриншота), затем поставьте точку останова и обработайте остальные.

НАЖМИТЕ ДЛЯ СКРИНШОТА