ฉันจะปิดหน้าต่างเบราว์เซอร์โดยไม่ได้รับข้อความแจ้ง“ คุณต้องการปิดหน้าต่างนี้” ได้อย่างไร


86

ฉันจะปิดหน้าต่างเบราว์เซอร์โดยไม่ได้รับข้อความDo you want to close this window prompt?

พร้อมท์เกิดขึ้นเมื่อฉันใช้window.close();ฟังก์ชัน


22
ง่ายที่สุด:window.open('','_self').close()
markasoftware

ใน Firefox ทั้งหมดนี้สามารถสงสัยได้หากคุณปิดใช้งานการปิดหน้าต่าง kb.mozillazine.org/…
Brian

3
หากคุณไม่ได้เป็นเจ้าของหน้าต่างเองคุณไม่ควรทำเช่นนั้น
Robert Harvey

เป็นไปไม่ได้อีกต่อไป stackoverflow.com/a/19768082/391101
Harvest316

คำตอบ:


85
window.open('', '_self', ''); window.close();

สิ่งนี้ใช้ได้กับฉัน


ใช้ได้กับ IE11, Safary 5.1.7 แต่ใช้ไม่ได้กับ FF และ Chrome
nikolai.serdiuk

ทำงานใน Firefox 38.0.5 และ Chrome 43
justanotherprogrammer

จะเกิดอะไรขึ้นถ้าเปิดหน้าต่างโดยใช้showModalDialog? มันไม่ทำงานบน IE10
bjan

ไม่แน่ใจว่าใช้ได้กับทุกเบราว์เซอร์หรือเปล่า แต่ใช้ได้กับ IE11 !!! ซึ่งเป็นเบราว์เซอร์ที่เราต้องสร้างขึ้นในปัจจุบัน ขอบคุณสำหรับคำตอบนี้คุณช่วยฉันได้มาก
KidBilly

ทำงานได้ดีใน IE 11, Chrome 76.0.3809, Firefox 69.0
Rahul Mahadik

57

เพื่อนของฉัน ... มีวิธี แต่ "แฮ็ค" ไม่ได้เริ่มบรรยาย คุณต้องใช้ประโยชน์จากข้อผิดพลาดโดยทั่วไปใน IE 6 & 7

ใช้ได้ผลทุกครั้ง!

แทนที่จะโทรwindow.close()ให้เปลี่ยนเส้นทางไปยังหน้าอื่น

เปิดหน้า:

alert("No whammies!");
window.open("closer.htm", '_self');

เปลี่ยนเส้นทางไปยังหน้าอื่น นี่หลอก IE ว่าให้คุณปิดเบราว์เซอร์ในหน้านี้

หน้าปิด:

<script type="text/javascript">
    window.close();
</script>

น่ากลัวเหรอ!


1
ฉันรู้ว่ามันเป็นเวลา 2 ปีแล้ว แต่มันน่าทึ่งมาก .. ใช้ได้กับ IE 8 และ firefox 15
Susie

9
ดูเหมือนว่า Microsoft ได้แก้ไขข้อบกพร่องนี้ใน IE10 แล้ว มีใครรู้บ้างว่าเราสามารถทำสิ่งนี้ได้อย่างไรใน IE10?
Abhi Rampal

ทั้ง self.close () และ window.close () ไม่ทำงานกับ IE ในฝั่งของฉัน อย่างไรก็ตาม Chrome, FF และ Safari ก็ใช้ได้
NoName

57

ไม่อนุญาตให้สคริปต์ปิดหน้าต่างที่ผู้ใช้เปิด นี่ถือเป็นความเสี่ยงด้านความปลอดภัย แม้ว่าจะไม่อยู่ในมาตรฐานใด ๆ แต่ผู้จำหน่ายเบราว์เซอร์ทั้งหมดก็ปฏิบัติตาม ( Mozilla docs ) หากสิ่งนี้เกิดขึ้นในบางเบราว์เซอร์แสดงว่าเป็นจุดบกพร่องด้านความปลอดภัยที่ (ตามหลักการแล้ว) ได้รับการแก้ไขอย่างรวดเร็ว

ไม่มีการแฮ็กใด ๆ ในคำตอบของคำถามนี้อีกต่อไปและหากมีคนคิดแฮ็กสกปรกอีกครั้งในที่สุดมันก็จะหยุดทำงานเช่นกัน

ฉันขอแนะนำให้คุณอย่าเสียพลังงานในการต่อสู้กับสิ่งนี้และยอมรับวิธีการที่เบราว์เซอร์ให้ประโยชน์แก่คุณ - ถามผู้ใช้ก่อนที่คุณจะดูเหมือนว่าหน้าของพวกเขาพัง


5
หรือง่ายกว่านั้น: อย่าปิดหน้าต่างเลย หากคุณทำเสร็จแล้วให้ส่งผู้ใช้กลับไปที่โฮมเพจของคุณหรือไปยังตำแหน่งศูนย์กลางอื่น ๆ
duskwuff -inactive-

2
@duskwuff เรากำลังทำการทดสอบอัตโนมัติกับเบราว์เซอร์เหล่านี้ พวกเขาจำเป็นต้องอยู่ใกล้
camouflageak

2
@ camouflageak แน่นอนว่ากรอบการทดสอบของคุณมีวิธีจัดการ windows อยู่บ้าง
duskwuff -inactive-

1
@duskwuff แล้วไลบรารีของบุคคลที่สามที่ทิ้งหน้าต่างไว้รอบ ๆ ล่ะ? คุณไม่สามารถแนะนำได้แน่นอนว่าฉันแค่ปล่อยให้ผู้ใช้ยุ่งหรือเปลี่ยนเส้นทางไปยังมุมมอง (ซ้ำ) ของโฮมเพจ
รถเข็นร้าง

1
คุณช่วยอธิบายในคำตอบของคุณเป็นเชิงอรรถได้หรือไม่ว่าเหตุใดจึงมีความเสี่ยงด้านความปลอดภัย

31

นี่คือฟังก์ชั่น Javascript ที่ฉันใช้เพื่อปิดเบราว์เซอร์โดยไม่มีพรอมต์หรือคำเตือนสามารถเรียกจาก Flash ได้ ควรอยู่ในไฟล์ html

    function closeWindows() {
         var browserName = navigator.appName;
         var browserVer = parseInt(navigator.appVersion);
         //alert(browserName + " : "+browserVer);

         //document.getElementById("flashContent").innerHTML = "<br>&nbsp;<font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";

         if(browserName == "Microsoft Internet Explorer"){
             var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;  
             if (ie7)
             {  
               //This method is required to close a window without any prompt for IE7 & greater versions.
               window.open('','_parent','');
               window.close();
             }
            else
             {
               //This method is required to close a window without any prompt for IE6
               this.focus();
               self.opener = this;
               self.close();
             }
        }else{  
            //For NON-IE Browsers except Firefox which doesnt support Auto Close
            try{
                this.focus();
                self.opener = this;
                self.close();
            }
            catch(e){

            }

            try{
                window.open('','_self','');
                window.close();
            }
            catch(e){

            }
        }
    }

บน IE 10.0.9200 เปิดหน้าต่างโดยใช้showModalDialog. ในวันcloseWindowsนี้ได้เปิดหน้าต่างใหม่ (หน้าเดียวกัน) ในขณะที่ก่อนหน้านี้หนึ่งยังคงเปิดอยู่
bjan

ไม่ทำงานบน Firefox, IE / Edge แสดงข้อความยืนยัน - แม้ว่ามันจะทำงานบน Chrome
Dymas

12

สิ่งนี้ใช้งานได้ใน Chrome 26, Internet Explorer 9 และ Safari 5.1.7 ( โดยไม่ต้องใช้หน้าผู้ช่วยเหลือคำตอบของ Ala Nick):

<script type="text/javascript">
    window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>

การซ้อนกันwindow.openคือการทำให้ IE ไม่แสดงข้อความDo you want to close this window prompt

น่าเสียดายที่ไม่สามารถให้ Firefox ปิดหน้าต่างได้


ทำงานสำหรับ IE 10 ด้วย
Mukus

11

ในแท็กเนื้อหา:

<body onload="window.open('', '_self', '');">

ในการปิดหน้าต่าง:

<a href="javascript:window.close();">

ทดสอบบน Safari 4.0.5, FF สำหรับ Mac 3.6, IE 8.0 และ FF สำหรับ Windows 3.5


นั่นเป็นหน้าที่เช่นเดียวกับที่นิคทำ
naugtur

ใช่. ถ้าฉันอ่านโพสต์ของ Nick อย่างถูกต้องเขาแนะนำให้เปลี่ยนเส้นทางก่อนเรียก window.close สิ่งที่ฉันโพสต์คือถ้าคุณไม่ต้องการใช้การเปลี่ยนเส้นทาง ถ้าฉันอ่านผิดโพสต์ขอโทษของนิค
JimB

7

ด้วยเหตุผลด้านความปลอดภัยหน้าต่างจะปิดได้ใน JavaScript ถ้าเปิดโดย JavaScript เท่านั้น ในการปิดหน้าต่างคุณต้องเปิดหน้าต่างใหม่โดย_selfให้เป็นเป้าหมายซึ่งจะเขียนทับหน้าต่างปัจจุบันของคุณจากนั้นปิดหน้าต่างนั้น (ซึ่งคุณสามารถทำได้ตั้งแต่เปิดผ่าน JavaScript)

window.open('', '_self', '');
window.close();

สิ่งนี้ใช้ได้กับฉันกับ Silverlight: HtmlPage.Window.Eval ("window.open ('', '_self', ''); window.close ();");
Mike Fuchs


6

window.open('', '_self', '').close();

ขออภัยที่นี่ช้าไปหน่อย แต่ฉันพบวิธีแก้ปัญหาอย่างน้อยก็สำหรับกรณีของฉัน ทดสอบบน Safari 11.0.3 และ Google Chrome 64.0.3282.167


5

เนื่องจากการปรับปรุงความปลอดภัยใน IE คุณจึงไม่สามารถปิดหน้าต่างได้เว้นแต่จะเปิดโดยสคริปต์ วิธีแก้ปัญหานี้คือให้เบราว์เซอร์คิดว่าหน้านี้เปิดโดยใช้สคริปต์จากนั้นจึงปิดหน้าต่าง ด้านล่างนี้คือการนำไปใช้งาน

ลองทำแบบนี้ดูมีเสน่ห์!
javascript ปิดหน้าต่างปัจจุบันโดยไม่ต้องแจ้ง IE

<script type="text/javascript">
function closeWP() {
 var Browser = navigator.appName;
 var indexB = Browser.indexOf('Explorer');

 if (indexB > 0) {
    var indexV = navigator.userAgent.indexOf('MSIE') + 5;
    var Version = navigator.userAgent.substring(indexV, indexV + 1);

    if (Version >= 7) {
        window.open('', '_self', '');
        window.close();
    }
    else if (Version == 6) {
        window.opener = null;
        window.close();
    }
    else {
        window.opener = '';
        window.close();
    }

 }
else {
    window.close();
 }
}
</script>

javascript ปิดหน้าต่างปัจจุบันโดยไม่ต้องแจ้ง IE


2

สร้างฟังก์ชัน JavaScript

<script type="text/javascript">
    function closeme() {
        window.open('', '_self', '');
        window.close();
    }
</script>

ตอนนี้เขียนโค้ดนี้และเรียกใช้ฟังก์ชัน JavaScript ด้านบน

<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>

หรือเพียงแค่:

<a href="" onclick="closeme();">close</a>

2

สิ่งนี้จะได้ผล:

<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>

ทำงานโดยใช้การใช้งาน Chrome ของ Python Eel
revliscano


0

เบราว์เซอร์บ่นเพราะคุณกำลังใช้งาน JavaScript เพื่อปิดหน้าต่างที่ไม่ได้เปิด JavaScript window.open('foo.html');กล่าวคือ



0

วางรหัสต่อไปนี้ใน ASPX

<script language=javascript>
function CloseWindow() 
{
    window.open('', '_self', '');
    window.close();
}
</script>

วางรหัสต่อไปนี้ในโค้ดด้านหลังเหตุการณ์การคลิกปุ่ม

string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";

Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);

หากคุณไม่มีการประมวลผลใด ๆ ก่อนปิดคุณสามารถใส่รหัสต่อไปนี้ลงใน ASPX ได้โดยตรงในแท็กคลิกปุ่ม

OnClientClick="CloseWindow();"

หวังว่านี่จะช่วยได้


คำถามถามหาวิธีแก้ปัญหาจาวาสคริปต์ง่ายๆหลีกเลี่ยง ASPX
Zeeshan

@Zeeshan: นักพัฒนาทุกคนที่มีค่าเกลือสามารถเห็นได้ว่า JavaScript ที่ด้านบนของโพสต์ของ Kamleshkumar Gujarathi สามารถนำไปใช้กับความต้องการของตนเองได้ สัมผัสที่รุนแรงหากคุณลงคะแนนคำตอบของเขา
พอล

0

ในสถานการณ์ของฉันรหัสต่อไปนี้ถูกฝังลงในไฟล์ php

var PreventExitPop = true;
function ExitPop() {
  if (PreventExitPop != false) {
    return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
  }
}
window.onbeforeunload = ExitPop;

ดังนั้นฉันจึงเปิดคอนโซลและเขียนสิ่งต่อไปนี้

PreventExitPop = false

วิธีนี้ช่วยแก้ปัญหาได้ ดังนั้นค้นหาโค้ด JavaScript และค้นหาตัวแปรและกำหนดให้เป็น "ค่า" ที่เหมาะสมซึ่งในกรณีของฉันคือ "เท็จ"


-3

ฉันจะโพสต์สิ่งนี้เพราะนี่คือสิ่งที่ฉันกำลังใช้กับไซต์ของฉันและมันใช้ได้ทั้งใน Google Chrome และ IE 10 โดยไม่ได้รับข้อความป๊อปอัป

<html>
    <head>
    </head>
    <body onload="window.close();">
    </body>
</html>

ฉันมีฟังก์ชันบนไซต์ของฉันที่ฉันต้องการเรียกใช้เพื่อบันทึกตัวแปรเปิด / ปิดไปยังเซสชันโดยไม่ต้องไปที่หน้าใหม่โดยตรงดังนั้นฉันจึงเปิดหน้าเว็บป๊อปอัปเล็ก ๆ จากนั้นเว็บเพจนั้นจะปิดตัวเองทันทีด้วยonload="window.close();"ฟังก์ชัน


ใช่: แต่เช่นเดียวกับข้อมูลstackoverflow.com/a/24854246/2239406 : คุณเปิด windo ใน javascript จากนั้นสามารถปิดด้วย javascript
Denis Chenu

ถ้ามันไม่ควรจะใช้งานได้และหากสิ่งนี้ได้รับการ 'แก้ไขแล้ว' มันยังคงใช้งานได้กับเบราว์เซอร์ทั้งหมดบนพีซีของฉันโดยไม่ล้มเหลว ฉันแค่ให้วิธีแก้ปัญหาที่กำลังได้ผลสำหรับฉัน
Logan Hasbrouck

ความแตกต่างคือคุณเปิดหน้าต่างใน JS หากหน้าต่างไม่เปิดใน JS: ไม่ทำงาน
Denis Chenu

ไม่ฉันไม่ได้ใช้ JS เพื่อเปิดหน้าต่าง ค่อนข้างฉันใช้aกับtarget=_blankเพื่อเปิดหน้าต่างป๊อปอัปเล็ก ๆ ที่ URL เฉพาะจากนั้นในที่สุดฉันก็ใช้ JS เพื่อปิดหน้าต่าง จุดประสงค์คือ URL ที่ระบุจะบันทึกค่าให้กับเซสชันเพื่อปิดการใช้งานภาพพื้นหลังแม้ว่าในไม่ช้าฉันจะลบออกเพื่อสนับสนุน ajax เมื่อฉันรู้วิธีทำ ajax (ยังคงเรียนรู้เชือกต่อไป)
Logan Hasbrouck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.