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


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.