Разбить javascript перед встроенным перенаправлением javascript в Chrome


94

Я просматриваю страницу со встроенным перенаправлением javascript ( window.location = "/anotherpage"). Я хочу загрузить страницу в Chrome, но у меня отключена строка перенаправления, поэтому я могу использовать страницу без перенаправления.

Вот что я пробовал:

  • Инструменты разработчика -> Cog -> Общие -> Отключить JavaScript. Загрузите страницу. Он не перенаправляет (ура!). Но я все еще хочу, чтобы остальная часть javascript страницы работала, а этого не произошло.

  • Введите URL-адрес, затем нажмите Инструменты разработчика -> Источники -> Пауза (F8) очень быстро! Он еще не перенаправлен (ура!). Теперь я хочу отключить строку перенаправления перед снятием с паузы, но эта часть еще даже не загружена в Инструменты разработчика. Так что я начну переходить через код javascript других файлов, пока не доберусь туда ?? Но как только я выхожу из других файлов javascript, он сразу же перенаправляется (уф!).

Это можно сделать? Я думал, что будет легко отключить строку javascript, но я в тупике.

Ответы:


144

Инструменты разработчика -> Источники -> Точки останова прослушивателя событий (на правой боковой панели) -> Загрузить -> проверить выгрузку

Это приведет к остановке отладчика при событии выгрузки, которое отправляется перед переходом.


2
Еще спасибо за рабочий ответ. Мне было бы интересно услышать, почему столько голосов за сообщение «это не работает»; это была проблема со старыми версиями Chrome? Может ли кто-нибудь, у кого это не сработало, предоставить дополнительную информацию?
— Christian Rondeau

8
Сначала я был очень рад увидеть этот ответ, но могу подтвердить, что он не работает для меня (хотя я проверил выгрузку, как было предложено, перенаправление страницы все еще происходит, и у меня нет возможности установить точки останова в источниках страницы А). Может быть, это связано с тем, как перенаправляется первая страница? В моем случае страница A (страница, javascript которой я пытаюсь отладить) выполняет POST (через javascript) на странице B.
— Эмиль Дж.

17
он работает нормально, проблема в том, что стек вызовов пуст, поэтому он не очень полезен, так как вы не сможете увидеть, что на самом деле вызвало перенаправление
— Евгений Кузьменко

8
@EugeneKuzmenko серьезно, я не знаю, как это на самом деле кому-то помогает
— Уилл П.

1
Это работает только в том случае, если у страницы есть обработчик выгрузки или перед выгрузкой, на котором отладчик может остановиться. Если такой обработчик не зарегистрирован, отладчик не сработает.
— Rumpel 06

43

Сделайте следующее

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

Точка останова при выгрузке Chrome


@TomBrito во время перерыва перед загрузкой (который мне пришлось использовать, чтобы уклониться от какой-то глупой платной подписки на газету), я могу проверять элементы. Разве вы не можете проверить при разгрузке? Я использую Chrome 71.0.3578.98.
— linkD

12

У меня есть сторонняя библиотека JS, в которой было неправильное условие перезагрузки страницы. И из-за этого страница постоянно перезагружалась. Я пытался найти неправильный код.

Я попытался использовать метод «Точки останова прослушивателя событий», но, как сказано в комментарии, у вас нет трассировки стека в событиях выгрузки, поэтому это довольно бесполезно.

Решение , которое работает для меня: Я создал страницу с IFrame тег с атрибутом песочнице, например , <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>и положить мой сайт в нем. Таким образом, внутри chrome будут возникать ошибки безопасности, и консоль покажет, где JS пытается получить доступ к объекту местоположения. Вы можете щелкнуть по нему и увидеть код. Лучше всего то, что в Chrome есть декомпрессор JS (кнопка {} в нижнем левом углу окна исходного кода), который умно, может отображать строку даже после красивой печати, так что вы можете увидеть ее даже в сжатом JS.

Дополнительная информация о свойстве песочницы: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox


Это работает, только если код (в этом iframe) top.location = "..."не используетlocation = "..."
— mems
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.