Hentikan javascript sebelum pengalihan javascript sebaris di Chrome


94

Saya melihat halaman yang memiliki javascript redirect ( window.location = "/anotherpage") sebaris . Saya ingin memuat halaman di Chrome tetapi menonaktifkan baris pengalihan, jadi saya dapat menggunakan halaman tersebut tanpa dialihkan.

Inilah yang saya coba:

  • Alat pengembang -> Roda -> Umum -> Nonaktifkan JavaScript. Muat halaman. Itu tidak mengalihkan (yay!). Tapi saya masih ingin javascript halaman lainnya berjalan, dan ternyata belum.

  • Ketik URL, lalu klik Alat pengembang -> Sumber -> Jeda (F8) sangat cepat! Itu belum dialihkan (hore!) Sekarang saya ingin menonaktifkan baris pengalihan sebelum membatalkan jeda, tetapi bagian itu bahkan belum dimuat ke Alat Pengembang. Jadi saya akan mulai melangkah melalui file lain kode javascript sampai saya sampai di sana ?? Tapi begitu saya keluar dari file lain javascript, itu langsung dialihkan (doh!).

Bisakah ini dilakukan? Saya pikir itu akan mudah untuk menonaktifkan baris javascript, tapi saya bingung.

Jawaban:


144

Alat Pengembang -> Sumber -> Titik Henti Pemroses Acara (di bilah sisi kanan) -> Muat -> centang bongkar

Ini akan membuat debugger berhenti saat acara bongkar muat yang dikirim sebelum navigasi.


2
Terima kasih lagi atas jawaban yang berhasil. Saya tertarik untuk mendengar mengapa begitu banyak suara positif pada pesan "ini tidak berhasil"; apakah ini masalah dengan versi Chrome yang lebih lama? Dapatkah seseorang yang tidak berhasil memberikan lebih banyak informasi?
Christian Rondeau

8
Saya awalnya sangat senang melihat tanggapan ini tetapi saya dapat mengonfirmasi bahwa itu tidak berfungsi untuk saya (meskipun saya telah memeriksa pembongkaran seperti yang disarankan, pengalihan halaman masih berlangsung dan saya tidak memiliki kesempatan untuk mengatur titik putus di sumber halaman SEBUAH). Mungkin ini ada hubungannya dengan cara halaman pertama "mengalihkan"? Dalam kasus saya, halaman A (halaman yang javascriptnya saya coba Debug) melakukan POST (melalui javascript) ke halaman B.
Emil G

17
berfungsi dengan baik, masalahnya adalah tumpukan panggilan kosong, jadi tidak terlalu membantu, karena Anda tidak akan dapat melihat apa yang sebenarnya memicu pengalihan
Eugene Kuzmenko

8
@EugeneKuzmenko serius, saya tidak tahu bagaimana ini sebenarnya membantu siapa pun
Will P.

1
Ini hanya berfungsi jika halaman memiliki penangan unload atau beforeunload di mana debugger dapat berhenti. Jika tidak ada penangan seperti itu yang terdaftar, debugger tidak akan memicu.
rumpel

43

Lakukan hal berikut

  1. Buka Alat Pengembang
  2. Buka tab Sumber
  3. Cari Titik Henti Pemroses Peristiwa
  4. Perluas opsi Muat
  5. Di sini periksa opsi bongkar

Chrome membongkar breakpoint


@TomBrito saat istirahat beforeunload (yang harus saya gunakan untuk menghindari paywall koran konyol), saya dapat memeriksa elemen. Bisakah Anda tidak memeriksa saat membongkar? Saya menggunakan Chrome 71.0.3578.98.
linkD

12

Saya memiliki pustaka JS pihak ketiga, yang memiliki kondisi yang salah untuk memuat ulang halaman. Dan halaman tersebut telah dimuat ulang terus menerus karena hal ini. Saya mencoba menemukan di mana kode yang salah.

Saya mencoba menggunakan metode "Event Listener Breakpoints", tetapi sebagai komentar mengatakan Anda tidak memiliki pelacakan tumpukan dalam acara pembongkaran, jadi itu sangat tidak berguna.

The solusi yang telah bekerja untuk saya: Saya membuat sebuah halaman dengan tag iframe dengan atribut sandbox, misalnya <iframe sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>, dan menempatkan situs saya di dalamnya. Dengan cara ini, kesalahan keamanan akan terjadi di dalam chrome dan konsol menunjukkan tempat JS mencoba mengakses objek lokasi. Anda dapat mengkliknya dan melihat kodenya. Yang terbaik adalah Chrome memiliki dekompresor JS (tombol {} di kiri bawah jendela sumber), yang cerdas, dapat menampilkan garis bahkan setelah pencetakan cantik, sehingga Anda dapat melihatnya bahkan dalam JS yang dikompresi.

Info selengkapnya tentang properti kotak pasir: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox


Ini hanya berfungsi jika kode (dalam iframe itu) top.location = "..."tidak digunakanlocation = "..."
mems
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.