2016-08-21 6 views
12

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

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

+1

Вы можете попробовать пользовательский прослушиватель «onunload» и прорваться туда. – Marvin

+0

Затем вы можете генерировать трассировку стека (http://stackoverflow.com/a/635852/558021) и посмотреть, какие функции задействованы при запуске перезагрузки. – Lix

+1

Возможно, вы уже знаете это. В консоли Chrome установлен флажок, из-за которого журналы не очищаются после перезагрузки. –

ответ

-2

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

CLICK FOR SCREENSHOT

+1

Это не помогает по моей причине, потому что я сказал, что я не уверен на 100%, в каком файле он находится. Это создает только точку останова в одном файл. –

9

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

  1. Открой Chrome Dev Tools
  2. Перейдите на вкладку "Источники"
  3. На правой панели разверните "Event Listener Breakpoints"
  4. Развернуть дерево «Загрузить»
  5. Проверьте beforeunload и unload варианты

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

Chrome Dev Tools with Suggested Event Listener Breakpoints Checked

Edit: С другой стороны, если это не работает, вы можете использовать Chrome для поиска всех загруженных сценариев для кода, который может быть ответственным. Есть, видимо, a lot of ways to refresh the page with JavaScript, но в основном они имеют несколько обычных строк, таких как «навигатор», «местоположение», «перезагрузка», «окно».

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

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

+0

он не выдаст код, который вызывает обновление – Siddharth

+0

Извините @ Сиддхарт не уверен, что я понимаю, к чему вы клоните? –

+0

Я имел в виду, что OP хочет обнаружить фрагмент кода, который вызывает обновление страницы, то, как вы помещаете эти события, просто отлично, но так или иначе мы не можем знать местоположение кода, запускающего обновление, надеемся, что у вас получится лучше Идея теперь – Siddharth

2

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

Если что-то спровоцировано событием, просто использовать (в хромовых Дев инструментов) Функция getEveneListener() и следовать listener следу ... (трудно, но возможно) примера:

enter image description here

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

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

3

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

0

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

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

Смежные вопросы