我试图阻止用户使用'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
}
}
答案 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');