Rumah > hujung hadapan web > tutorial js > Mengapa `window.close()` Tidak Berfungsi dalam Chrome dan Bagaimana Saya Boleh Membetulkannya?

Mengapa `window.close()` Tidak Berfungsi dalam Chrome dan Bagaimana Saya Boleh Membetulkannya?

Linda Hamilton
Lepaskan: 2025-01-01 11:19:10
asal
810 orang telah melayarinya

Why Doesn't `window.close()` Work in Chrome, and How Can I Fix It?

Window.close() Gagal dalam Chrome: Satu Langkah Keselamatan

Dalam bidang pembangunan web, telah diperhatikan bahawa tetingkap panggilan .close() atau self.close() dalam JavaScript telah berhenti menutup tetingkap yang disasarkan dalam penyemak imbas Chrome. Tingkah laku ini berpunca daripada langkah keselamatan penting yang dilaksanakan oleh Chrome untuk menghalang kod hasad dan pop timbul yang tidak diminta daripada menjejaskan pengalaman menyemak imbas pengguna.

Penutupan tetingkap dihadkan terutamanya kepada skrip yang telah menghasilkan tetingkap ini. Chrome mematuhi prinsip ini, tidak membenarkan penutupan sewenang-wenang oleh skrip luaran. Walau bagaimanapun, pengecualian ketara kepada peraturan ini hanya tersedia untuk JavaScript yang dijana oleh pengarang, membolehkan penutupan tetingkap yang dibuat oleh skrip yang sama.

Pelaksanaan Firefox yang Lebih Tegas

Firefox , sebaliknya, menguatkuasakan dasar yang lebih ketat, melarang penutupan tetingkap melainkan skrip pemanggilan secara eksplisit mencipta tetingkap menggunakan kaedah window.open(). Sebarang percubaan untuk memintas sekatan ini mengakibatkan mesej ralat dalam Firefox, manakala Chrome memilih kegagalan senyap.

Mitigasi untuk Pengguna Chrome

Untuk menangani cabaran ini dalam Chrome, eksploitasi "pengalihan kendiri" telah dieksploitasi sebelum ini. Walau bagaimanapun, teknik ini telah menjadi sebahagian besarnya tidak berkesan dalam versi semasa penyemak imbas. Namun begitu, versi strategi yang diubah suai kekal berdaya maju untuk digunakan dalam set keadaan yang terhad. Dengan menggunakan Tampermonkey dengan kebenaran @grant eksplisit, window.close() masih boleh dimanfaatkan untuk menutup tab tambahan (jika ada) dalam Chrome.

Untuk pengguna Firefox, satu-satunya penyelesaian yang berdaya maju melibatkan melumpuhkan keselamatan terbina dalam tetapan dalam penyemak imbas. Walau bagaimanapun, amalan ini amat tidak digalakkan kerana risiko keselamatan yang meningkat yang dikaitkan dengan konfigurasi penyemak imbas yang lemah.

Penyelesaian dan Penambahbaikan Jangka Panjang

Pendekatan paling berkesan untuk mengelakkan perkara ini had secara kekal adalah untuk membangunkan sambungan Chrome atau alat tambah Firefox. Mekanisme ini menyediakan keupayaan penutupan tingkap yang boleh dipercayai. Selain itu, mencadangkan fungsi sedemikian sebagai permintaan ciri kepada penyelenggara Greasemonkey dan Tampermonkey boleh menghasilkan penambahbaikan selanjutnya dan pelaksanaan yang dipermudahkan untuk pengarang skrip pengguna.

Atas ialah kandungan terperinci Mengapa `window.close()` Tidak Berfungsi dalam Chrome dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan