ขออภัยที่ไม่สนับสนุนการทำสิ่งนี้ แต่เมื่อเร็ว ๆ นี้ฉันได้ติดตั้งเว็บไซต์ที่โฮสต์ในพื้นที่ซึ่งต้องการความสามารถในการปิดแท็บเบราว์เซอร์ปัจจุบันและพบวิธีแก้ปัญหาที่น่าสนใจที่ไม่มีเอกสารที่ดีพอที่จะหาได้
หมายเหตุ: การแก้ไขปัญหาเหล่านี้ทำโดยคำนึงถึงไซต์ที่โฮสต์ในเครื่องและ (ยกเว้น Edge) กำหนดให้เบราว์เซอร์ต้องได้รับการกำหนดค่าเฉพาะดังนั้นจึงไม่เหมาะสำหรับไซต์ที่โฮสต์สาธารณะ
บริบท:ในอดีตสคริปต์ jQuery window.close()
สามารถปิดแท็บปัจจุบันโดยไม่มีปัญหากับเบราว์เซอร์ส่วนใหญ่ อย่างไรก็ตามเบราว์เซอร์สมัยใหม่ไม่สนับสนุนสคริปต์นี้อีกต่อไปอาจเป็นเพราะเหตุผลด้านความปลอดภัย
Google Chrome:
Chrome ไม่อนุญาตให้เรียกใช้สคริปต์ window.close () และจะไม่มีอะไรเกิดขึ้นหากคุณพยายามใช้ โดยใช้ปลั๊กอิน Chrome TamperMonkey อย่างไรก็ตามเราสามารถใช้วิธี window.close () หากคุณรวมไว้// @grant window.close
ในส่วนหัว UserScript ของ TamperMonkey
ตัวอย่างเช่นสคริปต์ของฉัน (ซึ่งถูกเรียกใช้งานเมื่อมีการคลิกปุ่มที่มี id = 'close_page' และหากกด 'ใช่' บนป๊อปอัปของเบราว์เซอร์) ดูเหมือนว่า:
// ==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();
}
});
})();
หมายเหตุ:โซลูชันนี้สามารถปิดแท็บได้หากไม่ใช่แท็บสุดท้ายที่เปิดอยู่ ดังนั้นจึงไม่สามารถปิดแท็บได้หากจะทำให้หน้าต่างปิดโดยการเปิดแท็บสุดท้าย
Firefox:
Firefox มีการตั้งค่าขั้นสูงที่คุณสามารถเปิดใช้งานเพื่ออนุญาตให้สคริปต์เพื่อปิดหน้าต่างการเปิดใช้งานwindow.close()
วิธีได้อย่างมีประสิทธิภาพ หากต้องการเปิดใช้งานการตั้งค่านี้ไปที่about: configจากนั้นค้นหาและค้นหาการกำหนดค่าตามความชอบdom.allow_scripts_to_close_windowsและเปลี่ยนจาก false เป็น true
สิ่งนี้อนุญาตให้คุณใช้window.close()
เมธอดในไฟล์ jQuery โดยตรงเช่นเดียวกับสคริปต์อื่น ๆ
ตัวอย่างเช่นสคริปต์นี้ทำงานอย่างสมบูรณ์แบบด้วยการตั้งค่าที่ต้องการเป็นจริง:
<script>
$("#close_page").click(function() {
var confirm_result = confirm("Are you sure you want to quit?");
if (confirm_result == true) {
window.close();
}
});
</script>
วิธีนี้ใช้งานได้ดีกว่าวิธีแก้ปัญหาของ Chrome เนื่องจากผู้ใช้สามารถปิดแท็บปัจจุบันแม้ว่าจะเป็นแท็บเดียวเท่านั้นที่เปิดอยู่และไม่จำเป็นต้องใช้ปลั๊กอินของบุคคลที่สาม ข้อเสียอย่างหนึ่งก็คือมันช่วยให้สคริปต์นี้ทำงานโดยเว็บไซต์ต่าง ๆ (ไม่ใช่เฉพาะที่คุณตั้งใจจะใช้) ดังนั้นอาจเป็นอันตรายต่อความปลอดภัยแม้ว่าฉันไม่สามารถจินตนาการได้ว่าการปิดแท็บปัจจุบันเป็นอันตรายอย่างยิ่ง
ขอบ:
Disappointingly Edge ทำงานได้ดีที่สุดจากเบราว์เซอร์ทั้ง 3 ตัวที่ฉันลองใช้และทำงานกับwindow.close()
วิธีการนี้โดยไม่ต้องมีการกำหนดค่าใด ๆ เมื่อwindow.close()
สคริปต์ทำงานป๊อปอัพเพิ่มเติมจะเตือนคุณว่าหน้ากำลังพยายามปิดแท็บปัจจุบันและถามว่าคุณต้องการดำเนินการต่อหรือไม่
หมายเหตุสุดท้าย:โซลูชันสำหรับทั้ง Chrome และ Firefox เป็นวิธีการแก้ปัญหาสำหรับบางสิ่งที่เบราว์เซอร์ปิดใช้งานโดยเจตนาอาจมีเหตุผลด้านความปลอดภัย พวกเขาทั้งสองต้องการให้ผู้ใช้กำหนดค่าเบราว์เซอร์ของพวกเขาให้เข้ากันได้ก่อนมือดังนั้นจึงมีแนวโน้มที่จะไม่สามารถใช้งานได้กับไซต์ที่มีไว้สำหรับการใช้งานสาธารณะ
หวังว่านี่จะช่วยได้! :)