2012-08-14 4 views
1

그래서, 나는 (그래도 난 그것을 기억할 수없는) 하나 개의 사이트에서이 방법을 본 적이 열고이 같이 작동합니다 :닫기 현재 브라우저 창이나 탭 팝업

먼저, 간단한 페이지가 간단한 로그인 양식으로 그러나 양식의 로그인 버튼을 클릭하면 사용자 및 비밀번호의 유효성 검사가 긍정적이고 서버의 응답도 긍정적 인 경우 새 팝업 창이 나타납니다 (자바 스크립트로 작성된 애플리케이션 - ExtJS). 브라우저의 현재 탭 (로그인 양식 페이지)이 닫힙니다.

ExtJS은 표시 할 수있는 리디렉션없이 전체 AJAX을 실행할만큼 강력한 단일 페이지 응용 프로그램 패턴이므로 제 생각에는 훌륭한 접근 방법입니다. 또한 팝업 시나리오는 브라우저 페이지 제어 단추 (뒤로, 앞으로, 새로 고침)를 제거하고 주소 표시 줄은 읽기 전용입니다.

이제 ExtJS를 주 응용 프로그램으로 사용하여 서버 측 스크립트 언어로 ASP.NET을 사용하여이 문제를 재현하려고합니다. - HTML5 + CSS3

  • 응용 프로그램 페이지 (팝업 창) - 순수의 ExtJS
  • 웹 서비스 - ServiceStack
    1. 로그인 페이지를 로그인 양식 : 그래서, 결과는 다음과 같은 것

      웹 서비스는 로그인 메소드와 다른 메소드를 노출하며 항상 JSON 응답을 반환합니다. 팝업을 열고 창을 닫기 전에 세션 변수를 설정해야합니다 (로그인에 성공한 경우).

      가 어떻게 팝업을 열고 로그인이 성공하면 현재 창/탭을 닫는이 시나리오를 수행 할 수 있습니다 여기

      그리고

      질문 온다? 도움, 힌트, 참조, 조언, 비판은 내가 바라는 전부입니다.

      감사합니다.

    답변

    1

    다른 창을 연 후에 현재 창을 닫을 수 있어야합니다.

    window.open('new window url'); window.close(); 
    

    나는 내 상자에이 시도하고 당신이 정말로이없는 경우 팝업을 열로부터 멀리하시오 크롬 및 사파리

    <input type="button" onClick="window.open('popop.html'); window.close();" value="open" /> 
    
    +0

    답장을 보내 주셔서 감사합니다. 문제는 창이 팝업으로 열리지 않기 때문에 브라우저 컨트롤 버튼이 여전히 존재한다는 것입니다. ''Firefox 14.0.1''에서는 새로운 탭을 열었고 현재 탭을 닫지 않습니다. ''Internet Explorer 9''에서는 Chrome과 Safari와 같이''Opera 11.64''에서''닫는 확인을 요구합니다. –

    +0

    편집 :''Opera 12.01''에서도 제대로 작동하지 않습니다. ''Firefox 14.0.1''과 같이 동작합니다. –

    +0

    브라우저 제어 버튼을 원하지 않습니까? – fengd

    0

    에 잘 작동합니다. 최신 브라우저는 기본적으로 팝업 창이 열리지 않도록 설정되어 있습니다.

    AFAIK 사용자가 클릭 한 하이퍼 링크는 AFAIK (대상 특성이있는) 새 창을 여는 유일한 100 % 시나리오입니다.
    window.open() 심지어 은 특정 브라우저에서 차단됩니다.

    실제적인 긍정적 인 반응이 있습니까, 아니면 단지 그 사이트의 허위 진위입니까? 여러분이 진술 한 이유는 한 창 시나리오에 모두 도움이됩니다.

    +0

    예, 있습니다. 한 가지 큰 이점은 팝업창에 주소창이 읽기 전용 인 점입니다. 왜? 왜냐하면 AFAIK, 클라이언트 사용자는 웹 사이트의 위치 (즉, 주소)를 다른 사이트로 변경할 수 없기 때문입니다. 이것은 Ajax 호출이나 문장이 제대로 종료되지 못하도록 방지합니다. 사용자가 로그 아웃 프로 시저를 건너 뛰면 일부 정리 작업을 수행하기 위해 윈도우의 닫기 이벤트를 잡는 것이 걱정됩니다. 뒤로 및 앞으로 단추는 쓸모가 없습니다 (단일 페이지 응용 프로그램) 및 새로 고침 바로 가기를 catch하고 무시할 수 있습니다. –

    +0

    @CosminT .: 일부 시나리오에서는 읽기 전용 주소 표시 줄을 사용하는 것이 좋을 수도 있습니다. 페이지가 자체 창에서 실행되고 있어야합니다. 나머지 이유는 의문의 여지가 있습니다. 올바른 문제를 해결하고 있습니까? –

    +0

    "올바른 문제 해결"이란 무엇을 의미합니까? –