Точка останова перед обновлением страницы?
Я отлаживаю некоторый сторонний миниатюрный Javascript, который где-то запускает обновление страницы браузера. Однако я не могу понять, какая часть кода вызывает обновление.
Есть ли способ установить точку останова в Chrome, которая будет удалена непосредственно перед обновлением страницы, чтобы я мог проверить стек вызовов, чтобы узнать, что вызвало его?
Ответы
Ответ 1
Попробуй это:
- Откройте инструменты Chrome Dev
- Перейдите на вкладку "Источники"
- На правой панели разверните "Контрольные точки прослушивателя событий",
- Разверните дерево "Загрузить"
- Проверьте
beforeunload
и unload
параметры
Посмотрите, помогает ли это; снимок экрана ниже.
Изменение: альтернативно, если это не сработает, вы можете использовать Chrome для поиска всех загруженных сценариев для кода, который может быть ответственным. По-видимому, существует много способов обновить страницу с помощью JavaScript, но в основном они имеют несколько общих строк, таких как "навигатор", "местоположение", "перезагрузка", "окно".
Наконец, если есть ссылка на ту же страницу, на которой вы находитесь, возможно, какой-то JS запускает клик на it-- маловероятным, но стоит изучить, если до сих пор ничего не работало...
(Пожалуйста, извините форматирование, поскольку я нахожусь на мобильном телефоне...)
Ответ 2
В сетевой панели devtool, переключите "журнал сохранения", внимательно проверьте столбец инициатора.
Ответ 3
Вы не указываете, что делает сторонняя библиотека. Если это компонент ui, например объявление или что-то подобное, просто поместите его в iframe
с атрибутом sandbox
настроенным по мере необходимости. https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe (прокрутите вниз до раздела атрибута песочницы)
Если это что-то, вызванное событием, просто используйте (только в инструментах хром-dev) функцию getEveneListener() и следуйте за цепочкой listener
... (сложно, но возможно) Пример:
Свойство listenener приведет вас к действительным функциям, которые будут вызываться. Вы можете искать их в запутанном коде и добавлять отладчик, чтобы понять его цель.
Есть много других сценариев - если вы можете указать больше.
Ответ 4
В Firefox (а не в Chrome важно) инструменты разработчика, перейдите на консоль, введите addEventListener('beforeunload',()=>{debugger})
и выполните свой код. После того как отладчик остановится в инструкции debugger
, посмотрите на стек вызовов. Вы увидите, что вызвало событие. У Chrome его не было.
По крайней мере, это сработало для меня.
Ответ 5
перейдите в Chrome> Inspect Element> Source> Выберите свой миниатюрный файл Javascript (Donot забыл нажать на {} вариант для лучшего понимания, нажмите ссылку ниже для скриншота), затем поставьте точку останова и обработайте остальные.
НАЖМИТЕ ДЛЯ СКРИНШОТА