Saya ingin membuat tautan di laman web yang akan menutup tab yang saat ini aktif di peramban tanpa menutup tab lain di peramban.
Ketika pengguna mengklik tautan tutup, sebuah pesan peringatan akan muncul meminta pengguna untuk mengonfirmasi dengan dua tombol, "YA" dan "TIDAK". Jika pengguna mengklik "YA", tutup halaman itu dan Jika "TIDAK", jangan lakukan apa pun.
Bagaimana itu bisa dilakukan? Ada saran?
javascript
html
hyperlink
Naveed
sumber
sumber
Jawaban:
Anda perlu Javascript untuk melakukan ini. Gunakan
window.close()
:Catatan: tab saat ini tersirat. Ini sama dengan:
atau Anda dapat menentukan jendela yang berbeda.
Begitu:
dengan HTML:
atau:
Anda di
return false
sini untuk mencegah perilaku default untuk acara tersebut. Kalau tidak, browser akan berusaha membuka URL itu (yang jelas bukan).Sekarang opsi pada
window.confirm()
kotak dialog akan OK dan Batalkan (tidak Ya dan Tidak). Jika Anda benar - benar ingin Ya dan Tidak, Anda harus membuat beberapa jenis kotak dialog modal Javascript.Catatan: ada perbedaan khusus browser dengan yang di atas. Jika Anda membuka jendela dengan Javascript (via
window.open()
) maka Anda diizinkan untuk menutup jendela dengan javascript. Firefox melarang Anda menutup jendela lain. Saya percaya IE akan meminta konfirmasi kepada pengguna. Peramban lain mungkin berbeda.sumber
about:config
dom.allow_scripts_to_close_windows = true
mungkin solusi di Firefox (mungkin risiko keamanan besar!)<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
Lihat juga artikel iniCoba ini
sumber
Metode ini berfungsi di Chrome dan IE:
sumber
open(location, '_self').close();
Sejauh yang saya tahu, tidak mungkin lagi di Chrome atau FireFox. Mungkin masih dimungkinkan di IE (setidaknya pra-Edge).
sumber
<button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button>
Lihat juga artikel iniItu mungkin. Saya mencari seluruh jaring untuk ini, tetapi sekali ketika saya mengambil salah satu survei microsoft, saya akhirnya mendapatkan jawabannya.
coba ini:
ini akan menutup tab saat ini untuk Anda.
sumber
Diuji berhasil dalam FF 18 dan Chrome 24:
Masukkan di kepala:
HTML:
Kredit diberikan kepada Marcos J. Drake .
sumber
Coba ini juga. Bekerja untuk saya di ketiga browser utama.
sumber
Berikut ini berfungsi untuk saya di Chrome 41:
Saya sudah mencoba beberapa ide untuk FF termasuk membuka halaman web yang sebenarnya, tetapi sepertinya tidak ada yang berhasil. Sejauh yang saya mengerti, browser apa pun akan menutup tab atau jendela dengan xxx.close () jika itu benar - benar dibuka oleh JS, tetapi FF, setidaknya, tidak dapat ditipu untuk menutup tab dengan membuka konten baru di dalam tab itu.
Itu masuk akal ketika Anda memikirkannya - pengguna mungkin tidak ingin JS menutup tab atau jendela yang memiliki riwayat berguna.
sumber
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:
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:
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. Ketikawindow.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! :)
sumber
Sedangkan untuk orang-orang yang masih mengunjungi halaman ini, Anda hanya diperbolehkan untuk menutup tab yang dibuka oleh skrip ATAU dengan menggunakan tag jangkar HTML dengan target _blank. Keduanya dapat ditutup menggunakan
sumber
ini berhasil bagi saya
sumber
sedikit terlambat tapi ini yang saya temukan ...
window.close()
hanya akan berfungsi (IE adalah pengecualian) jika jendela yang Anda cobaclose()
dibuka oleh skrip menggunakan metode window.open ().! (silakan lihat komentar @killstreet di bawah ini tentang tag jangkar dengan target _blank)
TLDR : chrome & firefox memungkinkan untuk menutupnya.
Anda akan mendapatkan kesalahan konsol: Skrip tidak dapat menutup windows yang tidak dibuka oleh skrip. sebagai kesalahan dan tidak ada yang lain.
Anda dapat menambahkan parameter unik di URL untuk mengetahui apakah halaman dibuka dari skrip (seperti waktu) - tetapi itu hanya peretasan dan bukan fungsi asli dan akan gagal dalam beberapa kasus.
saya tidak dapat menemukan cara untuk mengetahui apakah halaman dibuka dari open () atau tidak, dan tutup tidak akan melempar dan kesalahan. ini TIDAK akan mencetak "test":
Anda dapat membaca di MDN lebih lanjut tentang fungsi close ()
sumber
Inilah cara Anda membuat tautan seperti itu:
<a href="javascript:if(confirm('Close window?'))window.close()">close</a>
sumber
Ini adalah salah satu cara pemecahan yang sama, mendeklarasikan fungsi JavaScript seperti ini
Tambahkan baris berikut ke HTML untuk memanggil fungsi menggunakan a
<button>
sumber