Maaf untuk necroposting ini, tetapi saya baru-baru ini mengimplementasikan situs yang dihosting secara lokal yang membutuhkan kemampuan untuk menutup tab browser saat ini dan menemukan beberapa solusi menarik yang tidak terdokumentasi dengan baik di mana pun saya bisa temukan, jadi coba lakukan sendiri.
Catatan: Pemecahan masalah ini dilakukan dengan mempertimbangkan situs yang dihosting secara lokal, dan (dengan pengecualian Edge) mengharuskan browser dikonfigurasikan secara khusus, jadi tidak ideal untuk situs yang dihosting secara publik.
Konteks: Di masa lalu, skrip jQuery window.close()
dapat menutup tab saat ini tanpa masalah di sebagian besar browser. Namun, browser modern tidak lagi mendukung skrip ini, berpotensi karena alasan keamanan.
Google Chrome:
Chrome tidak mengizinkan skrip window.close () dijalankan dan tidak ada yang terjadi jika Anda mencoba menggunakannya. Namun, dengan menggunakan plugin Chrome TamperMonkey kita dapat menggunakan metode window.close () jika Anda memasukkan // @grant window.close
dalam header UserScript dari TamperMonkey.
Sebagai contoh, skrip saya (yang dipicu ketika tombol dengan id = 'close_page' diklik dan jika 'ya' ditekan pada sembulan browser) terlihat seperti:
// ==UserScript==
// @name Close Tab Script
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Closes current tab when triggered
// @author Mackey Johnstone
// @match http://localhost/index.php
// @grant window.close
// @require http://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==
(function() {
'use strict';
$("#close_page").click(function() {
var confirm_result = confirm("Are you sure you want to quit?");
if (confirm_result == true) {
window.close();
}
});
})();
Catatan: Solusi ini hanya dapat menutup tab jika BUKAN tab terakhir terbuka. Jadi secara efektif, itu tidak dapat menutup tab jika itu akan menyebabkan jendela ditutup dengan menjadi tab terakhir yang terbuka.
Firefox:
Firefox memiliki pengaturan lanjutan yang dapat Anda aktifkan untuk memungkinkan skrip untuk menutup windows, mengaktifkan window.close()
metode ini secara efektif . Untuk mengaktifkan pengaturan ini, buka about: config kemudian cari dan temukan preferensi dom.allow_scripts_to_close_windows dan alihkan dari false ke true.
Ini memungkinkan Anda untuk menggunakan window.close()
metode ini secara langsung di file jQuery Anda seperti halnya script lainnya.
Misalnya, skrip ini berfungsi sempurna dengan preferensi disetel ke true:
<script>
$("#close_page").click(function() {
var confirm_result = confirm("Are you sure you want to quit?");
if (confirm_result == true) {
window.close();
}
});
</script>
Ini berfungsi jauh lebih baik daripada solusi Chrome karena memungkinkan pengguna untuk menutup tab saat ini meskipun itu adalah satu-satunya tab yang terbuka, dan tidak memerlukan plugin pihak ketiga. Namun satu-satunya downside adalah bahwa ini juga memungkinkan skrip ini dijalankan oleh situs web yang berbeda (bukan hanya yang Anda ingin gunakan) sehingga berpotensi menjadi bahaya keamanan, meskipun saya tidak bisa membayangkan menutup tab saat ini menjadi sangat berbahaya.
Tepi:
Disappointingly Edge benar-benar melakukan yang terbaik dari semua 3 browser yang saya coba, dan bekerja dengan window.close()
metode ini tanpa memerlukan konfigurasi apa pun. Ketika window.close()
skrip dijalankan, popup tambahan memberi tahu Anda bahwa halaman tersebut mencoba untuk menutup tab saat ini dan menanyakan apakah Anda ingin melanjutkan.
Catatan Akhir: Solusi untuk Chrome dan Firefox adalah solusi untuk sesuatu yang sengaja dinonaktifkan oleh browser, berpotensi untuk alasan keamanan. Mereka juga meminta pengguna untuk mengkonfigurasi browser mereka agar kompatibel terlebih dahulu, sehingga kemungkinan tidak akan layak untuk situs yang ditujukan untuk penggunaan publik, tetapi ideal untuk solusi yang di-host secara lokal seperti milik saya.
Semoga ini bisa membantu! :)