차단 된 팝업을 허용하려는 경우 IE (7, 8, 9, 10)가 전체 페이지를 새로 고치는 이유는 무엇입니까?


3

팝업 창을 열고 싶어하는 버튼과 IE를 클릭 한 다음 전체 페이지를 새로 고쳐야하는 버튼을 클릭하기 만하면 데이터로 가득 찬 전체 양식을 채우는 것 이상으로 아무것도 자극하지 않으므로 양식에 입력 한 모든 내용 이 손실됩니다 .

왜?

IE의 팝업 차단기는 스크립트가 팝업을 열 수 없도록 초기에 페이지의 소스 나 무언가를 다시 작성합니까? 팝업을 허용하도록 지시 할 때 페이지를 완전히 새로 고쳐야 소스를 수정하지 않고 새로 고침하여 팝업을 비활성화해야하는 이유는 무엇입니까?

IE에게 페이지를 새로 고치지 않고 팝업을 허용 할 수 있다고 알려주는 방법이 있습니까?

답변:


7

TL; DR : 웹 페이지는 실제로는 응용 프로그램이므로 열 것으로 예상되지 않을 때 팝업을 열면 정의되지 않은 상태가 발생할 수 있습니다.


팝업은 JavaScript를 사용하여 표시됩니다. 때때로 스크립트는 팝업 창에서 약간의 반응을 기대할 수 있습니다. 브라우저가 팝업을 차단하면 스크립트에 문제가 있음을 알리고 적절한 조치를 취해야합니다. (또는 그냥 전체 스크립트를 취소 하므로이 질문에는 중요하지 않습니다)

나중에 해당 팝업을 열면 해당 팝업을 표시하려고 시도한 스크립트에 반응 할 수 있습니다. 그러나 이제 스크립트 실행이 종료되고 응용 프로그램은 정상적인 응용 프로그램 흐름에 입력 할 수없는 상태가되므로 응용 프로그램이 제대로 처리 할 수 ​​없을 가능성이 큽니다. 어떻게 될까요?

  1. 아무것도. 나쁜 일이 일어나지 않을 수도 있지만 확신 할 수는 없습니다.
  2. 웹 페이지를 새로 고치거나 쿠키를 지울 때까지 스크립트가 중단되어 응용 프로그램을 사용할 수 없게됩니다.
  3. 예기치 않은 상황이 발생하여 보안 결함이 발생할 수 있습니다.

나중에 팝업을 여는 정확한 결과는 프로그래밍 방식으로 예측할 수 없으므로 IE는 웹 페이지를 다시로드하면 스크립트가 다시 처리되지만 올바른 순간에 팝업이 표시되어 무언가를 깨뜨리지 못하게합니다.


당신이 말한 것이 정확하고 (그렇다고 믿는다면) 이것이 가장 좋은 해결책은 Microsoft가 여전히 팝업 창의 HTML을 다운로드하지만 사용자가 팝업에 동의 할 때까지 창을 표시하거나 HTML을 구문 분석하지 않는 것입니다. 쪽으로. 그 후, 응용 프로그램 흐름이 재개되고 아마도 원활 할 것입니다.
oscilatingcretin

그런 다음 @oscilatingcretin은 페이지에서 모든 스크립트를 일시 중지해야합니다. 왜냐하면 그들은 서로 반응하는 방식을 알지 못하기 때문입니다. 작동을 멈추는 것은 확장 메뉴, Facebook 로그인 버튼, 양식 확인 스크립트 등을 포함합니다. 또한 스크립트 일시 중단으로 인해 일시 중단되지 않기 때문에 실제로 문제를 해결하지 못합니다. 양식 등을 계속 편집 할 수 있으며 응용 프로그램에서이를 추적 할 수 없으므로 다시 불법 상태 일 수 있습니다.
gronostaj
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.