브라우저의 다른 탭을 닫지 않고 브라우저에서 현재 활성 탭을 닫는 링크를 웹 페이지에 만들고 싶습니다.
사용자가 닫기 링크를 클릭하면 "YES"와 "NO"의 두 버튼으로 확인하라는 경고 메시지가 나타납니다. 사용자가 "예"를 클릭하면 해당 페이지를 닫고 "아니오"이면 아무것도하지 마십시오.
어떻게 할 수 있습니까? 어떤 제안?
브라우저의 다른 탭을 닫지 않고 브라우저에서 현재 활성 탭을 닫는 링크를 웹 페이지에 만들고 싶습니다.
사용자가 닫기 링크를 클릭하면 "YES"와 "NO"의 두 버튼으로 확인하라는 경고 메시지가 나타납니다. 사용자가 "예"를 클릭하면 해당 페이지를 닫고 "아니오"이면 아무것도하지 마십시오.
어떻게 할 수 있습니까? 어떤 제안?
답변:
이를 위해서는 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는 사용자에게 확인을 요청합니다. 다른 브라우저는 다를 수 있습니다.
about:config
dom.allow_scripts_to_close_windows = true
파이어 폭스의 솔루션 (큰 보안 위험 수 있습니다!) 수 있습니다
이 시도
<a href="javascript:window.open('','_self').close();">close</a>
이 방법은 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>
open(location, '_self').close();
내가 알 수있는 한 더 이상 Chrome 또는 FireFox에서는 불가능합니다. IE (적어도 pre-Edge)에서는 여전히 가능할 수 있습니다.
것이 가능하다. 나는 이것에 대해 전체 그물을 검색했지만 한 번 Microsoft의 설문 조사 중 하나를 취했을 때 마침내 대답을 얻었습니다.
이 시도:
window.top.close();
현재 탭이 닫힙니다.
FF 18 및 Chrome 24에서 성공적으로 테스트되었습니다.
머리에 삽입 :
<script>
function closeWindow() {
window.open('','_parent','');
window.close();
}
</script>
HTML :
<a href="javascript:closeWindow();">Close Window</a>
크레딧은 Marcos J. Drake 로갑니다 .
다음은 Chrome 41에서 작동합니다.
function leave() {
var myWindow = window.open("", "_self");
myWindow.document.write("");
setTimeout (function() {myWindow.close();},1000);
}
실제 웹 페이지를 여는 것을 포함하여 FF에 대한 몇 가지 아이디어를 시도했지만 아무것도 작동하지 않는 것 같습니다. 내가 이해하는 한, 모든 브라우저는 xxx.close ()가있는 탭이나 창을 닫습니다. JS 실제로 열린 . 그러나 적어도 FF는 해당 탭 내에서 새 내용을 열어 탭을 닫을 수는 없습니다.
사용자가 JS가 유용한 기록이있는 탭이나 창을 닫는 것을 원하지 않을 수도 있습니다.
네크로 포스트를해서 미안하지만 최근에 현재 브라우저 탭을 닫는 기능이 필요한 로컬 호스팅 사이트를 구현했으며 내가 찾을 수있는 곳에서 잘 문서화되지 않은 흥미로운 해결 방법을 찾았습니다.
참고 : 이 해결 방법은 로컬로 호스팅 된 사이트를 염두에두고 수행되었으며 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에는 스크립트가 창을 닫아서 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 모두에 대한 솔루션은 잠재적으로 보안상의 이유로 브라우저가 의도적으로 비활성화 한 문제에 대한 해결 방법입니다. 또한 사용자가 브라우저를 사전에 호환되도록 구성해야하므로 공용으로 사용할 수있는 사이트에는 적합하지 않지만 로컬과 같은 로컬 호스팅 솔루션에는 이상적입니다.
이것이 도움이 되었기를 바랍니다! :)
이 페이지를 계속 방문하는 사람들은 스크립트로 열거 나 대상 _blank와 함께 HTML의 앵커 태그를 사용하여 열린 탭만 닫을 수 있습니다. 둘 다를 사용하여 닫을 수 있습니다
<script>
window.close();
</script>
조금 늦었지만 이것이 내가 찾은 것입니다 ...
window.close()
close()
window.open () 메소드를 사용하여 스크립트로 열린 창을 연 경우에만 작동합니다 (IE는 예외입니다) .
! (대상이 _blank 인 앵커 태그에 대해서는 아래 @killstreet의 의견을 참조하십시오)
TLDR : 크롬 & 파이어 폭스는 그들을 닫을 수 있습니다.
콘솔 오류가 발생합니다 : 스크립트가 열지 않은 창을 스크립트에서 닫지 못할 수 있습니다. 오류로 그리고 다른 것은 없습니다.
URL에서 고유 한 매개 변수를 추가하여 페이지에서 스크립트와 같은 페이지가 열렸는지 알 수 있지만 (시간과 같은) 해킹 일 뿐이며 기본 기능이 아니며 경우에 따라 실패 합니다.
페이지가 open ()에서 열렸는지 여부를 알 수있는 방법을 찾지 못했습니다. 닫기 오류가 발생하지 않습니다. 이것은 "테스트"를 인쇄하지 않습니다 :
try{
window.close();
}
catch (e){
console.log("text");
}
close () 함수에 대한 자세한 내용을 MDN에서 읽을 수 있습니다