문제

사용자가 클릭 할 때 확인 대화 상자없이 브라우저를 닫는 링크 나 버튼을 원합니다.

Internet Explorer 6, 7, 8 및 Firefox에서 작업해야합니다.

도움이 되었습니까?

해결책

일부 연구를 수행 한 결과 해당 창/탭이 JavaScript를 통해 열리지 않거나 탭에 히스토리 페이지가있는 경우 Firefox에서 창/탭을 닫을 수 없다는 것을 알았습니다 (예 : 웹 페이지를 탐색하여 뒤로 클릭 가능합니다. ).

Firefox에서 수행하는 방법 : 먼저 역사를 삭제하십시오. 그런 다음 확인란없이 창을 닫을 수 있습니다. 이 솔루션을 시도하지 않았습니다. 나는 이것을 수행하는 방법을 설명하는 여러 안정적인 페이지를 읽습니다.

Internet Explorer 6, 7, 8에 대한 솔루션.

브라우저의 약간의 도움으로 기능 감지 기능 : http://www.quirksmode.org/js/detect.html , 여러 IE 버전에 대한 확인란없이 창을 닫는 방법은 다음과 같습니다.

if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
        window.open('', '_self', '');
        window.close();
    } else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
        window.opener = null;
        window.close();
    } else {
        window.opener = '';
        window.close(); // attempt to close window first, show user warning message if fails
        alert("To avoid data corruption/loss. Please close this window immedietly.");
    }

브라우저 감지를 사용하는 것이 좋은 생각이 아니라고 생각할 수도 있습니다. 또한 많은 사람들은 사용자가 창을 닫도록 강요하는 것이 나쁜 일이라고 생각합니다. 나는 그 아이디어에 동의합니다. 그러나, 나는 우리가하는 소프트웨어 요구 사항 때문에 필요합니다.

도움이 되었기를 바랍니다.

다른 팁

그것은 주요 보안 위반 일 것입니다. 당신은 결코 그렇게 할 수 없습니다.

그러나 부모가 열린 어린이 창을 닫을 수 있습니다. 부모 창으로 팝업을 열었다고 가정 해 봅시다. 동일한 부모 창에 아이를 닫을 수있는 버튼이있을 수 있습니다. 브라우저는 절대 없습니다.

여기서 문제의 일부는 당신이 질문에서 당신의 목표에 대해 불분명하다는 것입니다. Frankie의 답변에 대한 귀하의 의견에서, 창을 전혀 닫을 필요가없는 것 같습니다. 단순히 창에서 사용 가능한 콘텐츠를 보호해야합니다.

여기에 내가 추천하는 것은 다음과 같습니다.

  1. (서버 측) 타임 아웃을 기준으로 로그인 세션을 죽입니다. 타임 아웃이 Up이면 페이지의 재 장전은 로그인 페이지로만 리디렉션해야합니다.
  2. 클라이언트 측에서 정기적으로 시간 초과 조건을 확인하고 로그인 페이지 또는 다른 용품을 사용하지 않는 페이지로 리디렉션하십시오.

솔직히, 일반적으로 탭을 닫거나 어쨌든 탐색하려는 순간까지 사이트에 사용자를 유지하는 것이 좋습니다. 탭을 강제로 닫는 대신 안전 할 필요가없는 방문 페이지로 리디렉션하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top