Розбийте javascript перед вбудованим переспрямуванням javascript у Chrome


91

Я переглядаю сторінку, яка має вбудоване переспрямування JavaScript ( window.location = "/anotherpage"). Я хочу завантажити сторінку в Chrome, але вимкнути рядок перенаправлення, тому я можу використовувати сторінку, не перенаправляючи.

Ось що я спробував:

  • Інструменти розробника -> Cog -> Загальне -> Вимкнути JavaScript. Завантажте сторінку. Це не переспрямовує (так!). Але я все ще хочу, щоб залишився запуск решти javascript сторінки, і цього ще не було.

  • Введіть URL-адресу, а потім натисніть Інструменти розробника -> Джерела -> Призупиніть (F8) дуже швидко! Він ще не переспрямований (так!). Зараз я хочу відключити рядок перенаправлення перед тим, як відмінити паузу, але ця частина ще не завантажена в Інструменти розробника. Тож я почну перебирати код інших файлів javascript, поки не доберусь туди ?? Але як тільки я виходжу з інших файлів javascript, він негайно перенаправляє геть (дох!).

Чи можна це зробити? Я думав, що це повинно бути легко відключити рядок javascript, але я заплутаний.

Відповіді:


142

Інструменти розробника -> Джерела -> Точки зупинки прослуховувача подій (на правій бічній панелі) -> Завантажити -> перевірити вивантаження

Це призведе до переривання налагоджувача під час розвантаження, яке відправляється перед навігацією.


2
Ще одна подяка за робочу відповідь. Мені було б цікаво почути, чому так багато голосів за повідомлення "це не працює"; це була проблема зі старими версіями Chrome? Чи може хтось, у кого це не спрацювало, надати більше інформації?
Крістіан Рондо

8
Спочатку я був дуже радий побачити цю відповідь, але можу підтвердити, що вона у мене не працює (хоча я перевірив вивантаження, як пропонувалось, переспрямування сторінки все ще відбувається, і у мене немає шансів встановити точки зупинки у джерелах сторінки А). Можливо, це пов’язано з тим, як перша сторінка «переспрямовує»? У моєму випадку сторінка A (сторінка, javascript якої я намагаюся налагодити) виконує POST (через javascript) на сторінку B.
Emil G

17
це працює добре, проблема в тому, що стек дзвінків порожній, тому це насправді не корисно, оскільки ви не зможете побачити, що насправді спричинило переспрямування
Євген Кузьменко

8
@EugeneKuzmenko серйозно, я не знаю, як це насправді допомагає кожному
Will P.

1
Це працює лише в тому випадку, якщо сторінка має обробник вивантаження або до вивантаження, на якому налагоджувач може зупинитися. Якщо такого обробника не зареєстровано, налагоджувач не спрацює.
Румпель

42

Виконайте наступне

  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.