Функция выполняется правильно только при наличии предупреждения - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть функция, которая запускается, когда window.onbeforeunload выполняет ее

function goodbye(e) {
//    alert("isSortingOrChangingStatus="+isSortingOrChangingStatus+", hasShadowUserCopy="+hasShadowUserCopy);
    if(!isSortingOrChangingStatus)
    {
        if(playlistModified=="true")//||playlistModified=="True")
        {
            if (!e) e = window.event;
            //e.cancelBubble is supported by IE - this will kill the bubbling process.
            e.cancelBubble = true;
            if(hasShadowUserCopy=="true"||hasShadowUserCopy=="True")
            {
                e.returnValue = 'If you have unsaved playlist changes, you will lose your changes if you press OK now.';
                e.returnValue += '\n\nChanges to Dayparts, Messages or Groups will not be submitted to your devices but will be saved and visible the next time that you log in if you press OK now.';
            }
            else
            {
                e.returnValue = 'You have unsaved playlist changes and will lose your changes if you press OK now.'; //This is displayed on the dialog
            }
            //e.stopPropagation works in Firefox.
            if (e.stopPropagation) 
            {
                e.stopPropagation();
                e.preventDefault();
            }
        }
        else
        {
            if(hasShadowUserCopy=="true"||hasShadowUserCopy=="True")
            {
                if (!e) e = window.event;
                //e.cancelBubble is supported by IE - this will kill the bubbling process.
                e.cancelBubble = true;
                e.returnValue = 'If you have unsaved playlist changes, you will lose your changes if you press OK now.';
                e.returnValue += '\n\nChanges to Dayparts, Messages or Groups will not be submitted to your devices but will be saved and visible the next time that you log in if you press OK now.';
                //e.stopPropagation works in Firefox.
                if (e.stopPropagation) 
                {
                    e.stopPropagation();
                    e.preventDefault();
                }
            }
            else{
                return;
            }
        }        
    }
    else
    {
        if(isChangingStatus==true)
        {
            $("#ctl00_cphBody_hfIsChangingStatus").val("true");
        }
    }    
}
window.onbeforeunload = goodbye;

эта функция выполнялась отлично раньше.Я даже могу проверить это на живом сайте и увидеть, как это работает.Я сделал несколько изменений кода на странице, которые вообще не были связаны с этой функцией.Я также добавил

function resetFrames(){
    parent.document.getElementById("Edit").rows="0%,0%,100%";
}
window.onunload=resetFrames;

, который выполняется нормально.

Проблема, с которой я сталкиваюсь, заключается в том, что теперь функция «до свидания» выполняется правильно только тогда, когда в ней есть предупреждение.Вы можете увидеть предупреждение () во второй строке кода.есть ли причина, по которой функция будет правильно выполняться только с alert ()?

Выполняется ли функция onunload до успешного выполнения onbeforeunlaod?

...