3

사용자가 링크를 클릭하면 확인 대화 상자없이 브라우저가 닫히는 링크 또는 버튼이 있어야한다고 가정합니다.Javascript로 IE6, IE7, IE8 및 Firefox를 닫지 않으시겠습니까?

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

+21

불가능합니다. 좋은 이유로. – jantimon

+0

다른 모든 인기있는 브라우저에서도 마찬가지입니다. 거친 행운의 동료. –

+2

가짜 JavaScript 코드로 인해 모든 탭을 잃어 버리는 것을 싫어합니다! 다행히도 브라우저는 적어도 메인 윈도우에서이 작업을 금지합니다. 그런 일을하는 방법은 sooo XXth century! (브라우저 창에 한 페이지 만 표시되는 경우 ...) – PhiLho

답변

13

약간의 연구를했는데 Firefox/Firefox에서 해당 창/탭이 자바 스크립트를 통해 열리지 않거나 탭에 기록 페이지> 1 (즉, 뒤로 버튼 클릭 가능)이 있으면 창/탭을 닫을 수 없다는 것을 알았습니다 당신은 웹 페이지를 탐색합니다).

Firefox에서 수행 할 작업 : 먼저 기록을 삭제하십시오. 그러면 확인 상자없이 창을 닫을 수 있습니다. 나는이 해결책을 시도하지 않았다. 나는 이것을하는 방법을 설명하는 신뢰할 수있는 여러 페이지들을 읽는 것을 본다. 인터넷 익스플로러 6, 7

솔루션, 기능을 감지 브라우저에서 약간의 도움으로 8

: 여기 http://www.quirksmode.org/js/detect.html 여러 IE 버전에 대한 comfirmation 상자없이 창을 닫 방법이다.

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."); 
    } 

저는 브라우저 인식 기능을 사용하는 것이 좋지 않다고 생각할 수도 있습니다. 또한 많은 사람들이 창 닫기를 강요하는 것은 나쁜 일이라고 생각합니다. 나는 그 생각에 동의한다. 그러나 우리가해야 할 소프트웨어 요구 때문에 그저 필요합니다.

희망이 도움이됩니다.

+0

IE6 및 IE7에서는 작동하지만 Firefox 3.5에서는 작동하지 않습니다. – Sauron

+0

예. 위의 코드는 Firefox에서 작동하지 않으므로 마지막 섹션을 추가하십시오. 경고 ("데이터 손상/손실을 방지하려면이 창을 닫으십시오."); 를 사용하여 사용자에게 알리십시오. Firefox를 정말로 닫아야하는 경우 기록을 삭제하는 코드를 작성하여 닫을 페이지가 탭의 첫 페이지 (사용자가 열리는 첫 페이지 임)를 작성하면됩니다. 페이지를 닫을 수 있어야합니다. – natch3z

1

큰 보안 침해가 될 수 있습니다. 당신은 결코 그것을 할 수 없을 것입니다.

그러나 부모가 열어 준 하위 창을 닫을 수 있습니다. 부모 창과 함께 팝업 창을 열었을 때 같은 부모 창에 자식을 닫기위한 단추가있을 수 있다고 가정 해보십시오. 절대로 브라우저.

+0

보안상의 이유로 기본 브라우저를 닫아야합니다.사용자가 시스템에서 로그 오프 한 후 브라우저가 자동으로 닫히도록해야합니다. – natch3z

+7

http_auth 기반 인증을 사용한다고 가정 할 수 있습니까? 보안이 큰 문제인 경우 잠시 후에 세션이 만료되어야한다고 생각하면 세션을 유지하는 다른 방법을 고려해야합니다. 보안을 위해 해킹하려고 시도하고 있습니다! :) 그 반대의 방법으로하십시오. 해킹에 당신의 방법을 확보하십시오! ... – Frankie

+4

보안을 구현하려는 시도가 브라우저의 기존 보안 기능에 의해 방해 될 때마다 기술을 재평가 할 수 있습니다. –

1

여기에서 문제의 일부는 질문에서 목표에 대해 분명하지 않다는 것입니다. Frankie의 답변에 대한 귀하의 의견을 통해, 실제로 창을 닫을 필요가 전혀없는 것처럼 보였습니다. 창에서 사용할 수있는 콘텐츠를 보호하기 만하면됩니다.

  1. 은 로그인 한 세션 A (서버 측)에 따라 제한 시간을 죽여 : 여기

    내가 추천 할 것입니다. 시간 초과가되면 페이지를 새로 고침하면 로그인 페이지로 리디렉션됩니다.

  2. 클라이언트 측에서 정기적으로 시간 초과 조건을 확인하고 로그인 페이지로 리다이렉트하거나 다른 보안 페이지가 필요하지 않습니다.

솔직히 말해서 사용자가 탭을 닫거나 다른 방법으로 찾아보기를 원하는 순간까지 사용자를 사이트에 두는 것이 좋습니다. 탭을 강제로 닫으려고하는 대신 안전하지 않아도되는 방문 페이지로 리디렉션하면됩니다.