0

我试图阻止用户使用“F5”刷新页面,但只有在显示厚框时。

麻烦的是,在我在Thickbox 中的页面之间切换后,我在下面查看Thickbox 是否可见的检查总是返回false -

var bol_thickbox_shown = ($('#TB_window').is(':visible')) ? true : false;

我认为这与加载页面的方式有关(可能是 AJAX 调用),但我不知道在检查Thickbox 是否可见时如何处理。有人可以帮忙吗?谢谢。

这是我的完整代码-

/**
 * Prevent F5 from refreshing the page if the Thickbox is shown
 */
document.onkeydown = function(e){

    /** Check to see if the Thickbox is being shown */
    var bol_thickbox_shown = ($('#TB_window').is(':visible')) ? true : false;
    console.log('bol_thickbox_shown: '+bol_thickbox_shown);

    if(bol_thickbox_shown && e.keyCode === 116){ // F5 keycode is 116

        e.preventDefault();
        e.returnValue = false; // for IE

    }

}
4

1 回答 1

1

您可以触发var bol_thickbox_shown此函数的外部,并在厚盒打开时将其设置为 true,如果它们关闭,则将其设置为 false。

例如:

var bol_thickbox_shown = false;

/* hook this bol_thickbox_shown true/false 
   to wherever you fire the Thickbox */

document.onkeydown = function(e){

    console.log('bol_thickbox_shown: '+bol_thickbox_shown);

    if(bol_thickbox_shown && e.keyCode === 116){ // F5 keycode is 116

        e.preventDefault();
        e.returnValue = false; // for IE

    }

}

即使您不喜欢此解决方案,您也可以优化以下行:

var bol_thickbox_shown = ($('#TB_window').is(':visible')) ? true : false;

var bol_thickbox_shown = $('#TB_window').is(':visible');
于 2013-01-17T11:55:00.323 回答