JavaScript 및 onbeforeunload?
-
19-09-2019 - |
문제
나는 가지고있다
<span class="cssButton"><a href="javascript:void(0);" class="buttonBlue" onclick="swfu.startUpload();"> <img src="http://uber-upload.com/img/icons/up_16.png" alt=""/> Uber-Upload! </a></span>
그리고 해당 버튼을 누르면 페이지를 떠나려고하면 "이 페이지를 떠나고 싶다고 확신합니까?" 업로드가 진행되는 동안 사람들이 우연히 떠나는 것을 방지하는 경고.
업로드 마감 후 변수를 설정하는 것에 대해 걱정하지 마십시오. 추가하겠습니다. 저를 프레임 워크로 만들려면 스마트 코더 중 하나가 필요합니다.
감사!
해결책
이 선언을 페이지에 추가하십시오.
var upcount = 0;
on Click을 다음으로 변경하십시오.
onclick="++upcount; swfu.startUpload();"
만약 swfu
업로드가 완료되면 어떤 종류의 이벤트를 제공합니다.
--upcount;
이 처리기를 추가하십시오.
window.onbeforeunload = function() {
if (upcount > 0) {
return "The upload is still in progress, leaving the page will cancel it.";
}
}
브라우저가 onbeforeunload를 존중하는 경우 작동합니다. 그리고 그들 대부분은 대부분의 시간입니다. 그들이하지 않는 곳, 당신은 시도했습니다. 카운터를 사용하면 여러 번 업로드 할 수 있습니다.
Attubevent (IE) 또는 addeventListener (표준) (또는 프로토 타입 또는 jQuery와 같은 라이브러리를 고려하여 속성을 사용하지 않고 이벤트를 첨부하기위한 이벤트를 고려할 수 있습니다. 속성 (일명 DOM0 핸들러)을 사용하는 것은 상당히 구식이며 약간 제한적입니다 (요소 당 이벤트 당 하나의 핸들러 만). 그러나 여전히 작동합니다.
다른 팁
function warnUser()
{
if(dataIsDirty)
{
return "You have made changes. They will be lost if you continue.";
}
else
{
// Reset the flag to its default value.
dataIsDirty = false;
}
}
function isDirty()
{
dataIsDirty = true;
}
function isClean()
{
dataIsDirty = false;
}
그런 다음 당신은 그것에서처럼 그것을 사용합니다 onbeforeunload
이벤트.
window.onbeforeunload = warnUser;
dataIsDirty = false; //Or true, depending on if you want it to show up even if they dont' make changes)
그런 다음 사용하려면 'Isclean'기능을 트리거하고 싶지 않은 것에 사용하십시오 (예 : 저장). 양식 필드 편집).
onbeforeunload에 의존하는 것은 기껏해야 스케치입니다. 스패머는 사람들이이를 수행 할 수있는 능력을 제안하는 것과 같은 방식으로 행동을 남용했기 때문에 기본적으로 제거되었습니다.
닫기 이벤트가 버튼을 활성화하여 해고 된 경우 Onbeforeunload에만 응답 할 수 있습니다.