브라우저 창에서 현재 탭을 닫는 방법은 무엇입니까?


435

브라우저의 다른 탭을 닫지 않고 브라우저에서 현재 활성 탭을 닫는 링크를 웹 페이지에 만들고 싶습니다.
사용자가 닫기 링크를 클릭하면 "YES"와 "NO"의 두 버튼으로 확인하라는 경고 메시지가 나타납니다. 사용자가 "예"를 클릭하면 해당 페이지를 닫고 "아니오"이면 아무것도하지 마십시오.

어떻게 할 수 있습니까? 어떤 제안?


나는 늦게 여기에있을 수 있지만, 이것은 이유가 브라우저에 의해 방지 할 수있다. <br> <br> 가상 또 다시 창을 닫으려고 자신의 생각과는 일을 같이 폐쇄하지 년대 " 의 경우에는 "당신의 질문에서 일부없는 '아무것도하지 않습니다'입니다. <br> <br> 이것은 확실히 자극적입니다!
무하마드 오사마

답변:


503

이를 위해서는 Javascript가 필요합니다. 사용 window.close():

close();

참고 : 현재 탭이 내포되어 있습니다. 이것은 동등하다 :

window.close();

또는 다른 창을 지정할 수 있습니다.

그래서:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

HTML로 :

<a href="javascript:close_window();">close</a>

또는:

<a href="#" onclick="close_window();return false;">close</a>

당신은 return false이벤트의 기본 동작을 방지하려면 여기를. 그렇지 않으면 브라우저는 해당 URL로 이동하려고 시도합니다 (명백하지 않음).

이제 window.confirm()대화 상자 의 옵션은 확인 및 취소입니다 (예 및 아니오 아님). 예와 아니오 를 정말로 원한다면 일종의 모달 자바 스크립트 대화 상자를 만들어야합니다.

참고 : 위와 브라우저마다 차이가 있습니다. 을 통해 자바 스크립트로 창을 열면 (자바로 window.open()) 자바 스크립트로 창 을 닫을 수 있습니다. Firefox는 다른 창을 닫을 수 없습니다. IE는 사용자에게 확인을 요청합니다. 다른 브라우저는 다를 수 있습니다.


387
JavaScript를 통해 탭을 닫을 수 없습니다. "이 메소드는 window.open 메소드를 사용하여 스크립트에 의해 열린 윈도우에 대해서만 호출 될 수 있습니다." 다시 말해 JavaScript 만 사용하여 JavaScript를 통해 생성 된 창 / 탭을 닫을 수 있습니다.
Ryan Joy

7
-1 크롬 30 PC에서 작동하지 않습니다. 다른 답변은 현재 탭에서 창을 연 다음 닫습니다.
markasoftware

2
에서는 about:config dom.allow_scripts_to_close_windows = true파이어 폭스의 솔루션 (큰 보안 위험 수 있습니다!) 수 있습니다
의 Nepomuk Frädrich

6
브라우저는이 동작을 허용하지 않습니다. 자바 스크립트는 열린 탭만 닫을 수 있습니다.
Edward Kennedy

1
크롬 62이 작품 (적어도) <button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button> 도 참조이 문서
헤링

247

이 시도

<a href="javascript:window.open('','_self').close();">close</a>

2
Firefox 31.0에서 작업
Adrian Carr

1
이 솔루션의 나쁜 점은 get 요청이 서버로 전송된다는 것입니다. 그러나 다른 쪽에서는 다른 해결책을 찾지 못했습니다.
100r

18
Chrome 콘솔에서이 작업을 수행하면 "스크립트에서 열린
의회

작동하지 않습니다. 스크립트는 열린 창만 닫을 수 있습니다.
Roman Losev

1
크롬 60.0.3079.0에서 작동하지 않음 : "스크립트는 스크립트에서 연 창만 닫을 수 있습니다."
Our_Benefactors

65

이 방법은 Chrome 및 IE에서 작동합니다.

<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
    If you click on this the window will be closed after 1000ms
</a>

56
더 간단하게 :open(location, '_self').close();
uınbɐɥs

이것은 IE 11에서 잘 작동하지만, 크롬 38에서 작동하지 않았다
얀 듀란에게

31

내가 알 수있는 한 더 이상 Chrome 또는 FireFox에서는 불가능합니다. IE (적어도 pre-Edge)에서는 여전히 가능할 수 있습니다.


2
크롬 62이 작품 (적어도) <button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button> 도 참조이 문서
헤링

@hering 글쎄,이 기사는 2006 년에 나온 것이지만, 만약 당신이 효과가있는 것을 발견한다면, 그것은 좋은 소식이며 아마도이 기사를 읽는 사람들에게 도움이 될 것입니다. 공유해 주셔서 감사합니다.
Guy Schalnat

문제는 해당 탭 내에서 현재 활성 탭을 닫는 것에 관한 것입니다. 말했듯이 Chrome 또는 Firefox에서는 불가능합니다. 이것이 정답입니다.
decates

14

것이 가능하다. 나는 이것에 대해 전체 그물을 검색했지만 한 번 Microsoft의 설문 조사 중 하나를 취했을 때 마침내 대답을 얻었습니다.

이 시도:

window.top.close();

현재 탭이 닫힙니다.


12
"스크립트는 열린 창만 닫을 수 있습니다." Chrome 50.
Husky

7

FF 18 및 Chrome 24에서 성공적으로 테스트되었습니다.

머리에 삽입 :

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML :

<a href="javascript:closeWindow();">Close Window</a>

크레딧은 Marcos J. Drake 로갑니다 .


크롬에서 실행되지 않음 "스크립트는 스크립트에서 연 창만 닫을 수 있습니다."
César León

7

이것도 시도하십시오. 세 가지 주요 브라우저 모두에서 나를 위해 일하고 있습니다.

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>

Firefox Quantum 68.0.1에서 작동하지 않습니다
Zeke

7

다음은 Chrome 41에서 작동합니다.

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

실제 웹 페이지를 여는 것을 포함하여 FF에 대한 몇 가지 아이디어를 시도했지만 아무것도 작동하지 않는 것 같습니다. 내가 이해하는 한, 모든 브라우저는 xxx.close ()가있는 탭이나 창을 닫습니다. JS 실제로 열린 . 그러나 적어도 FF는 해당 탭 내에서 새 내용을 열어 탭을 닫을 수는 없습니다.

사용자가 JS가 유용한 기록이있는 탭이나 창을 닫는 것을 원하지 않을 수도 있습니다.


Chrome : 'Uncaught TypeError :'innerHTML '속성을 null로 설정할 수 없습니다'
Francisco Corrales Morales

5

네크로 포스트를해서 미안하지만 최근에 현재 브라우저 탭을 닫는 기능이 필요한 로컬 호스팅 사이트를 구현했으며 내가 찾을 수있는 곳에서 잘 문서화되지 않은 흥미로운 해결 방법을 찾았습니다.

참고 : 이 해결 방법은 로컬로 호스팅 된 사이트를 염두에두고 수행되었으며 Edge를 제외하고는 브라우저를 구체적으로 구성해야하므로 공개 호스팅 된 사이트에는 적합하지 않습니다.

컨텍스트 : 과거에는 jQuery 스크립트 window.close()가 대부분의 브라우저에서 문제없이 현재 탭을 닫을 수있었습니다. 그러나 최신 브라우저는 더 이상 보안상의 이유로이 스크립트를 지원하지 않습니다.

구글 크롬:

Chrome에서는 window.close () 스크립트를 실행할 수 없으며 사용하려고하면 아무 일도 일어나지 않습니다. 그러나 Chrome 플러그인 TamperMonkey 사용 하면 TamperMonkey의 UserScript 헤더에 를 포함 하면 window.close () 메소드를 사용할 있습니다 // @grant window.close.

예를 들어 내 스크립트 (id = 'close_page'인 버튼을 클릭하고 브라우저 팝업에서 'yes'를 누르면 트리거 됨)는 다음과 같습니다.

// ==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 파일에서 직접 메소드 를 사용할 수 있습니다 .

예를 들어이 스크립트는 환경 설정이 true로 설정된 상태에서 완벽하게 작동합니다.

<script>
  $("#close_page").click(function() {
    var confirm_result = confirm("Are you sure you want to quit?");
    if (confirm_result == true) {
      window.close();
    }
  });
</script>

Chrome 탭보다 탭이 열려 있어도 타사 플러그인이 필요하지 않아도 현재 탭을 닫을 수 있으므로 Chrome 해결 방법보다 훨씬 효과적입니다. 그러나 단점은이 스크립트를 사용하려는 웹 사이트뿐만 아니라 다른 웹 사이트 에서도이 스크립트를 실행할 수 있으므로 현재 탭을 닫는 것이 특히 위험하다는 것을 상상할 수는 없지만 잠재적으로 보안 위험이 될 수 있다는 것입니다.

가장자리:

Disappointingly Edge는 실제로 내가 시도한 3 개의 브라우저 중 최상의 성능을 발휘했으며 window.close()구성 없이도이 방법으로 작업했습니다 . 때 window.close()스크립트가 실행되어, 추가 팝업 경고하면 페이지가 현재 탭을 닫으려고 것을 계속할 것인지 묻습니다.

여기에 이미지 설명을 입력하십시오

최종 메모 : Chrome과 Firefox 모두에 대한 솔루션은 잠재적으로 보안상의 이유로 브라우저가 의도적으로 비활성화 한 문제에 대한 해결 방법입니다. 또한 사용자가 브라우저를 사전에 호환되도록 구성해야하므로 공용으로 사용할 수있는 사이트에는 적합하지 않지만 로컬과 같은 로컬 호스팅 솔루션에는 이상적입니다.

이것이 도움이 되었기를 바랍니다! :)


5

이 페이지를 계속 방문하는 사람들은 스크립트로 열거 나 대상 _blank와 함께 HTML의 앵커 태그를 사용하여 열린 탭만 닫을 수 있습니다. 둘 다를 사용하여 닫을 수 있습니다

<script>
    window.close();
</script>

이것은 모든 최신 브라우저에서 작동합니다. IE11 및 Edge 17은 확인 경고를 표시하지만 여전히 작동합니다.
Fabian von Ellerts

1
<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

이것은 나를 위해 일을했다


1

조금 늦었지만 이것이 내가 찾은 것입니다 ...

window.close()close()window.open () 메소드를 사용하여 스크립트로 열린 창을 연 경우에만 작동합니다 (IE는 예외입니다) .

! (대상이 _blank 인 앵커 태그에 대해서는 아래 @killstreet의 의견을 참조하십시오)

TLDR : 크롬 & 파이어 폭스는 그들을 닫을 수 있습니다.

콘솔 오류가 발생합니다 : 스크립트가 열지 않은 창을 스크립트에서 닫지 못할 수 있습니다. 오류로 그리고 다른 것은 없습니다.

URL에서 고유 한 매개 변수를 추가하여 페이지에서 스크립트와 같은 페이지가 열렸는지 알 수 있지만 (시간과 같은) 해킹 일 뿐이며 기본 기능이 아니며 경우에 따라 실패 합니다.

페이지가 open ()에서 열렸는지 여부를 알 수있는 방법을 찾지 못했습니다. 닫기 오류가 발생하지 않습니다. 이것은 "테스트"를 인쇄하지 않습니다 :

try{
  window.close();
}
catch (e){
  console.log("text");
}

close () 함수에 대한 자세한 내용을 MDN에서 읽을 수 있습니다


2
스크립트에 의해 열린 탭뿐만 아니라 target _blank가있는 앵커 태그도 닫을 수 있습니다. 지금까지 크롬과 파이어 폭스에서 테스트되었으며 둘 다 앵커 태그로 열린 탭을 닫을 수있는 것으로 보입니다.
killstreet

-1

이러한 링크를 만드는 방법은 다음과 같습니다.

<a href="javascript:if(confirm('Close window?'))window.close()">close</a>


-1

이것은 같은 것을 해결하는 한 가지 방법입니다. 다음과 같은 JavaScript 함수를 선언하십시오.

<script>
  function Exit() {
     var x=confirm('Are You sure want to exit:');
     if(x) window.close();
   }
</script>

HTML에 다음 줄을 추가하여 a를 사용하여 함수를 호출하십시오. <button>

<button name='closeIt' onClick="Exit()" >Click to exit </Button>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.