检查AJAX生成的内容是否可见

时间:2013-01-17 11:15:01

标签: javascript ajax visible thickbox

我试图阻止用户使用'F5'刷新页面,但只有在显示Thickbox时才会刷新页面。

麻烦的是,在我在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

    }

}

1 个答案:

答案 0 :(得分: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');