0

ユーザーが「F5」を使用してページを更新できないようにしようとしていますが、これはシックボックスが表示されている場合のみです。

問題は、シックボックスのページを切り替えた後、シックボックスが表示されているかどうかを確認するための以下のチェックで、常にfalseが返されることです。

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

これはページが読み込まれる方法(おそらくAJAX呼び出し)に関係していると思いますが、シックボックスが表示されているかどうかを確認するときに、そのためのアカウントを作成する方法がわかりません。誰か助けてもらえますか?ありがとう。

これが私の完全なコードです-

/**
 * 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 に答える