Bunu necroposting için üzgünüm, ancak son zamanlarda mevcut tarayıcı sekmesini kapatma yeteneğine ihtiyaç duyan ve bulabildiğim her yerde iyi belgelendirilmemiş bazı ilginç geçici çözümler bulan yerel olarak barındırılan bir site uyguladım, bu yüzden bunu kendim aldım.
Not: Bu geçici çözümler yerel olarak barındırılan bir site düşünülerek yapılmıştır ve (Edge hariç) tarayıcının özel olarak yapılandırılmasını gerektirir, bu nedenle genel olarak barındırılan siteler için ideal olmaz.
Bağlam: Geçmişte, jQuery betiği window.close()
geçerli sekmeyi çoğu tarayıcıda sorunsuz olarak kapatabiliyordu. Ancak, modern tarayıcılar artık güvenlik nedeniyle potansiyel olarak bu komut dosyasını desteklememektedir.
Google Chrome:
Chrome, window.close () komut dosyasının çalıştırılmasına izin vermez ve kullanmaya çalıştığınızda hiçbir şey olmaz. Biz ancak TamperMonkey eklentisi Chrome'u kullanarak yapabilirsiniz window.close () yöntemini kullanmak durumunda eklemek // @grant window.close
TamperMonkey arasında userscript başlığındaki.
Örneğin, komut dosyam (id = 'close_page' bulunan bir düğmeye tıklandığında ve tarayıcı açılır penceresinde 'evet' basıldığında tetiklenir) şöyle görünür:
// ==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();
}
});
})();
Not: Bu çözüm sekmeyi ancak açık olan son sekme DEĞİLSE kapatabilir. Bu nedenle, son sekme açık olarak pencerenin kapanmasına neden olacaksa sekmeyi kapatamaz.
Firefox:
Firefox, komut dosyalarının pencereleri kapatmasına izin verebileceğiniz ve window.close()
yöntemi etkili bir şekilde etkinleştirebileceğiniz gelişmiş bir ayara sahiptir . Bu ayarı etkinleştirmek için about: config komutuna gidin ve dom.allow_scripts_to_close_windows tercihini arayın ve bulun ve false değerinden true değerine değiştirin.
Bu, window.close()
yöntemi diğer komut dosyalarında olduğu gibi doğrudan jQuery dosyanızda kullanmanızı sağlar .
Örneğin, bu komut dosyası tercihi true değerine ayarlandığında mükemmel çalışır:
<script>
$("#close_page").click(function() {
var confirm_result = confirm("Are you sure you want to quit?");
if (confirm_result == true) {
window.close();
}
});
</script>
Bu, kullanıcının tek sekme açık olsa bile geçerli sekmeyi kapatmasına izin verdiği ve üçüncü taraf bir eklenti gerektirmediği için Chrome geçici çözümünden çok daha iyi çalışır. Tek dezavantajı, aynı zamanda bu komut dosyasının farklı web siteleri tarafından çalıştırılmasına izin vermesidir (sadece kullanmak istediğinizi değil), bu yüzden potansiyel olarak bir güvenlik tehlikesi olabilir, ancak mevcut sekmeyi kapatmanın özellikle tehlikeli olduğunu düşünemiyorum.
kenar:
Hayal kırıklığı yaratan Edge aslında denediğim 3 tarayıcıdan en iyisini yaptı ve window.close()
herhangi bir yapılandırma gerektirmeden yöntemle çalıştı . Ne zaman window.close()
komut dosyası çalıştırılır, ek bir pop-up uyarıları sayfa geçerli sekmeyi kapatmak için çalıştığını ve devam etmek isteyip istemediğinizi sorar.
Son Not: Hem Chrome hem de Firefox'un çözümleri, potansiyel olarak güvenlik nedeniyle tarayıcıların kasıtlı olarak devre dışı bırakıldığı bir şey için geçici çözümlerdir. Her ikisi de kullanıcının tarayıcılarını elden önce uyumlu olacak şekilde yapılandırmasını gerektirir, bu nedenle genel kullanıma yönelik siteler için uygun olmayabilir, ancak benimki gibi yerel olarak barındırılan çözümler için idealdir.
Umarım bu yardımcı oldu! :)