2013-01-17 54 views
0

我試圖阻止用戶能夠使用「F5」刷新頁面,但僅當顯示Thickbox時才能刷新頁面。檢查AJAX生成的內容是否可見

麻煩的是,之後我在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

我很懷疑你可以改變瀏覽器中默認快捷方式的默認行爲(但我可能是錯的)。 – h2ooooooo

+0

如果此框打開或可見,那麼在ajax調用檢查之後,你無法將變量設置爲true。 –

+0

@ h2ooooooo - 以上防止'F5'刷新頁面的方法在不與Thickbox配合使用時工作得很好。我的問題與Thickbox的存在以及頁面加載後如何生成有關。 –

回答

1

你可以觸發這個功能外var bol_thickbox_shown並將其設置爲true時開放,爲假ThickBox的,如果他們在那裏關閉。

例如:

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');