Rumah >hujung hadapan web >tutorial js >Mengapakah `window.close()` dan `self.close()` Gagal Menutup Windows Chrome?

Mengapakah `window.close()` dan `self.close()` Gagal Menutup Windows Chrome?

Linda Hamilton
Linda Hamiltonasal
2024-12-18 03:43:10963semak imbas

Why Do `window.close()` and `self.close()` Fail to Close Chrome Windows?

Window.close dan Self.close Gagal Menutup Windows Chrome: Analisis Komprehensif

Memanggil window.close() atau self.close () dalam kod JavaScript mungkin gagal menutup tetingkap dalam Chrome. Percanggahan ini berpunca daripada salah tanggapan umum bahawa Chrome melarang skrip daripada menutup tetingkap melainkan ia dibuat skrip. Walaupun ini palsu, kaedah ini mungkin masih gagal berfungsi seperti yang diharapkan. Artikel ini menyelidiki sebab asas dan meneroka penyelesaian yang berpotensi.

Sekatan Keselamatan

Pelayar moden telah melaksanakan langkah keselamatan untuk menghalang skrip berniat jahat daripada menutup tetingkap secara sembarangan. Mengikut spesifikasi window.close(), JavaScript biasanya tidak dibenarkan menutup tetingkap yang tidak dibuat oleh skrip yang sama. Sekatan ini bertujuan untuk mengekang eksploitasi keselamatan dan kesulitan pengguna.

Pelaksanaan Firefox

Firefox mematuhi garis panduan keselamatan ini dengan tegas, secara jelas melarang skrip daripada menutup tetingkap yang tidak dibuka oleh skrip. Jika skrip Greasemonkey/Tampermonkey cuba menggunakan window.close() dalam Firefox, ia akan mencetuskan mesej ralat: "Skrip mungkin tidak menutup tetingkap yang tidak dibuka oleh skrip."

Pelaksanaan Chrome

Chrome, sebaliknya, membenarkan skrip menutup tetingkap yang tidak dibuat skrip. Walau bagaimanapun, pengecualian ini tidak meliputi konteks skrip pengguna seperti Greasemonkey atau Tampermonkey. Percubaan untuk menggunakan window.close() daripada konteks ini akan mengakibatkan kegagalan senyap.

Penyelesaian

Sementara sambungan Chrome dan alat tambah Firefox menyediakan penyelesaian yang boleh dipercayai untuk penutupan windows, terdapat penyelesaian yang meretas untuk pengguna skrip:

Chrome:

  • Eksploitasi Ubah Semula Diri: Eksploitasi ini tidak lagi berkesan secara umum. Walau bagaimanapun, ia mungkin masih berfungsi dengan kod yang disuntik dalam tab yang baru dibuka tanpa sejarah penyemakan imbas.
  • @grant Window.Close Method: Menggunakan arahan @grant dalam skrip Tampermonkey, adalah mungkin untuk dayakan kefungsian window.close(). Walau bagaimanapun, ini hanya berfungsi untuk tab tambahan dan bukan untuk tab terakhir yang tinggal.

Firefox:

  • Lumpuhkan Tetapan Keselamatan: Ubah tetapan about:config allow_scripts_to_close_windows kepada benar. Ini tidak disyorkan kerana kebimbangan keselamatan.

Penyelesaian Jangka Panjang

Pendekatan yang paling boleh dipercayai ialah membuat sambungan Chrome khusus atau alat tambah Firefox yang boleh memanggil window.close() dengan berkesan. Sebagai alternatif, pembangun skrip pengguna boleh mempertimbangkan untuk menyerahkan permintaan ciri kepada Greasemonkey atau Tampermonkey untuk kefungsian penutupan tetingkap terbina dalam.

Atas ialah kandungan terperinci Mengapakah `window.close()` dan `self.close()` Gagal Menutup Windows Chrome?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn