집 >
기사 > 웹 프론트엔드 > IE_javascript 기술에서 window.onbeforeunload 메소드가 제대로 작동하지 않는 솔루션
IE_javascript 기술에서 window.onbeforeunload 메소드가 제대로 작동하지 않는 솔루션
WBOY원래의
2016-05-16 18:35:571044검색
사건의 원인은 직장에서 사용자들이 웹서핑을 하면서 상품을 주문하는 경우가 많았는데, 한 번에 너무 많은 창을 열었거나, 키보드 입력 시 실수로 F5 키를 눌러 페이지가 새로고침되는 현상이 발생했다고 고객이 제보한 것입니다. 또는 비정상적으로 종료되며 이때 웹페이지에서 수행된 작업에 대한 모든 정보가 손실됩니다. 고객 정보가 처리되지 않을 때 프롬프트를 제공할 수 있다면 좋을 것입니다. 다음 코드는 다음과 같은 메시지를 감지할 수 있습니다. 사용자가 닫기를 클릭하거나, 작업 표시줄을 닫거나, 뒤로를 클릭하거나, 새로 고침을 하거나, F5 키를 누르든 상관없이 사용자가 떠나려고 합니다.
탐지할 페이지에 binunbeforunload() 메서드만 등록하면 됩니다. 이 메서드를 본문의 onload 또는 document.ready를 사용합니다. window.onbeforeunload는 페이지가 언로드되기 전에 프롬프트 상자가 나타나는 것입니다. 이제 테스트 코드를 살펴보겠습니다.
이번에 테스트한 코드가 전부입니다. 이제 페이지를 새로 고치면 예상했던 대화 상자가 나타납니다. 그런데 위 코드를 IE에서 열었을 때 '이벤트 바인딩 삭제 버튼'이 작동하지 않아서 국내 사용자의 3분의 2가 IE를 사용하고 있는데, 특히 빌어먹을 IE6을 사용할 때 7. 내 코드라면. IE6 및 7에서는 정상적으로 작동하지 않습니다. 이는 내 작업이 헛된 것임을 의미합니다. 물론 보너스에 대해 생각할 필요가 없습니다. 메소드는 모두 사람이 생각한 것입니다. 전역 변수를 사용하여 대화 상자가 표시되는지 여부를 제어합니다. 수정된 "javascript" 코드는 다음과 같습니다.
바인딩 삭제 시 이벤트가 동시에 호출되면 goodexit 변수의 값을 다음으로 변경합니다. true는 사용자가 정상적으로 종료했음을 의미하므로 대화 상자가 팝업되지 않습니다. 다시 테스트해 보세요. 정상입니다. 그래, 제가 원하는 결과입니다! 이 글은 Brandon Himes의 글이고, 역시 구글 스냅샷에서 나온 글입니다. 원래는 번역하고 싶었는데 제 수준이 정말 한계가 있어서 이해가 안되네요. 번역이 좋지 않습니다. 반대로 친구가 원문을 읽고 싶다면 여기를 직접 클릭하십시오. 이것은 스냅샷 주소이며 잠시 후 존재하지 않을 수 있습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.