"이 창을 닫으시겠습니까?"프롬프트를받지 않고 브라우저 창을 닫으려면 어떻게해야합니까?


86

이 창을 닫으 시겠습니까? 프롬프트 를 받지 않고 브라우저 창 을 닫으려면 어떻게해야합니까?

window.close();기능을 사용할 때 프롬프트가 표시됩니다 .


22
가장 쉬운 방법 :window.open('','_self').close()
— markasoftware 2013

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 2014 년

Firefox 38.0.5 및 Chrome 43에서 작업
— justanotherprogrammer 2015-06-26

창이 열리면 showModalDialog어떻게 될까요? IE10에서는 작동하지 않습니다
— bjan

이것이 모든 브라우저에서 작동하는지 확실하지 않지만 IE11에서는 작동합니다 !!! 현재 우리가 구축해야하는 브라우저입니다. 이 답변에 감사 드리며 많은 수고를 덜어주었습니다.
— KidBilly

IE 11, 크롬 76.0.3809, 파이어 폭스 69.0에서 잘 작동
— 라훌 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 2015 년

57

스크립트는 사용자가 연 창을 닫을 수 없습니다 . 이것은 보안 위험으로 간주됩니다. 어떤 표준도 아니지만 모든 브라우저 공급 업체는이를 따릅니다 ( Mozilla 문서 ). 일부 브라우저에서 이런 일이 발생하면 (이상적으로) 매우 빠르게 패치되는 보안 버그입니다.

이 질문에 대한 답변의 해킹은 더 이상 작동하지 않으며 누군가가 다른 더러운 해킹을 생각해 내면 결국 작동을 멈출 것입니다.

이 문제를 해결하기 위해 에너지를 낭비하지 마시고 브라우저가 유용하게 제공하는 방법을 수용 할 것을 제안합니다 . 페이지가 충돌하는 것처럼 보이기 전에 사용자 에게 물어보십시오 .


5
또는 더 간단합니다. 창을 전혀 닫지 마십시오. 완료되면 사용자를 홈 페이지 또는 다른 일종의 중앙 위치로 다시 보냅니다.
— duskwuff-비활성-

2
@duskwuff, 우리는 이러한 브라우저에 대해 자동화 된 테스트를 실행하고 있습니다. 그들은 닫아야 합니다.
— ouflak

2
@ouflak 확실히 테스트 프레임 워크에는 창을 조작하는 방법이 있습니다.
— duskwuff -inactive-

1
@duskwuff 창을 놓아 두는 타사 라이브러리는 어떻습니까? 사용자를 위해 엉망진창을 남기거나 홈 페이지의 (중복)보기로 리디렉션하도록 제안 할 수는 없습니다.
— Abandoned Cart

1
답변에서 각주로 왜 보안 위험인지 설명해 주시겠습니까?
— T.Todua

31

다음은 Prompt 또는 Warning없이 브라우저를 닫는 데 사용하는 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에서 작동합니다 ( 도우미 페이지를 사용 하지 않고 Nick의 대답).

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

중첩 window.open은 IE 가이 창을 닫으시겠습니까? 프롬프트 를 표시 하지 않도록하는 것 입니다.

불행히도 Firefox에서 창을 닫는 것은 불가능합니다.


IE 10에서도 작동했습니다.
— Mukus

11

본문 태그에서 :

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

창을 닫으려면 :

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

Safari 4.0.5, Mac 3.6 용 FF, IE 8.0 및 Windows 3.5 용 FF에서 테스트되었습니다.


기능적으로 Nick이했던 것과 같습니다.
— naugtur 2010

예. Nick의 게시물을 올바르게 읽고 있다면 window.close를 호출하기 전에 리디렉션을 제안합니다. 내가 게시 한 것은 리디렉션을 사용하지 않으려는 경우입니다. 내가 Nick의 포스트 사과를 잘못 읽었다면.
— JimB 2010

7

보안상의 이유로 창은 JavaScript로 열린 경우에만 JavaScript에서 닫을 수 있습니다. 창을 닫으 _self려면 현재 창을 덮어 쓰는 대상으로 새 창을 열고 해당 창 을 닫아야합니다 (JavaScript를 통해 열렸 기 때문에 수행 할 수 있음).

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

이것은 Silverlight에서 저에게 효과적이었습니다. HtmlPage.Window.Eval ( "window.open ( '', '_self', ''); window.close ();");
— Mike Fuchs 2011

6

에서 여기 :

<a href="javascript:window.opener='x';window.close();">Close</a>

window.opener무언가 를 설정해야합니다 . 그렇지 않으면 불평합니다.


거의 7 년 후 Chrome, FF 및 IE 10에서 작동합니다.
— Mike Devenney

6

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

여기서 조금 늦게 미안하지만 적어도 내 경우에는 해결책을 찾았습니다. Safari 11.0.3 및 Google Chrome 64.0.3282.167에서 테스트되었습니다.


5

IE의 보안 향상으로 인해 스크립트로 열지 않는 한 창을 닫을 수 없습니다. 따라서이 문제를 해결하는 방법은 브라우저가이 페이지가 스크립트를 사용하여 열렸다고 생각한 다음 창을 닫는 것입니다. 아래는 구현입니다.

이것을 시도하면 매력처럼 작동합니다!
자바 스크립트는 프롬프트 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>

자바 스크립트는 프롬프트 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>

Python Eel의 Chrome 구현을 사용하여 작업했습니다.
— revliscano


0

자바 스크립트로 열리지 않은 창을 닫기 위해 자바 스크립트를 사용하고 있기 때문에 브라우저가 불평하고 있습니다 window.open('foo.html');.


0

내가 찾은 최고의 솔루션은 다음과 같습니다.

this.focus();
self.opener=this;
self.close();

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 2015

@Zeeshan : 모든 개발자는 Kamleshkumar Gujarathi의 게시물 상단에있는 JavaScript가 자신의 요구 사항에 적용될 수 있음을 알 수 있습니다. 그의 대답에 반대한다면 가혹한 터치.
— Paul

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

이것이 내가 현재 내 사이트에 사용하고 있으며 팝업 메시지를받지 않고 Chrome과 IE 10 모두에서 작동하기 때문에 이것을 게시 할 것입니다.

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

새 페이지로 직접 이동하지 않고 세션에 on / off 변수를 저장하는 기능이 내 사이트에 있으므로 작은 팝업 웹 페이지를 엽니 다. 그러면 해당 웹 페이지가 onload="window.close();"기능 과 함께 즉시 닫힙니다 .


예 : 그러나 stackoverflow.com/a/24854246/2239406 정보 와 마찬가지로 자바 스크립트에서 windo를 연 다음 자바 스크립트로 닫을 수 있습니다.
— Denis Chenu 2015 년

글쎄, 그것이 작동하지 않아야하고 이것이 '패치'되었다면, 그것은 여전히 ​​내 PC의 모든 브라우저에서 실패없이 작동합니다. 나는 단순히 현재 나를 위해 일하고있는 솔루션을 제공하고있었습니다.
— Logan Hasbrouck

차이점은 JS에서 창을 여는 것입니다. 창이 JS에서 열리지 않으면 작동하지 않습니다.
— 데니스 Chenu

아니요, JS를 사용하여 창을 열지 않습니다. 오히려 특정 URL에서 작은 팝업 창을 열기 위해 awith target=_blank를 사용하고 있으며 마지막으로 JS를 사용하여 창을 닫습니다. 목적은 특정 URL이 배경 이미지를 비활성화하기 위해 세션에 값을 저장하는 것입니다.하지만 곧 여기서는 ajax를 수행하는 방법을 알아 내면 ajax를 위해 삭제하게 될 것입니다. (여전히 로프 persay 학습)
— 로건 Hasbrouck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.