【问题标题】:Check if Thickbox is open检查Thickbox是否打开
【发布时间】:2013-01-16 15:59:01
【问题描述】:

我正在使用 WP,并且我使用Thickbox 在自定义页面的后端上传图像。

有没有办法让JS检查Thickbox是否打开?

我需要检查这一点,因为我有一个 onbeforeunload 事件(在某些情况下,当用户离开页面时显示警告),但显然我不希望在用户只是在Thickbox 之间导航时显示警告页。谢谢。

我目前使用的代码 -

var bol_submit_clicked = false;
$('input[name="Submit"]').click(function(){
    bol_submit_clicked = true;
});

window.onbeforeunload = function closeEditorWarning(){

    var bol_option_changed = false;

    /** Check to see if the settings warning is displayed */
    if($('#unsaved-settings').css('display') !== 'none'){
        bol_option_changed = true;
    }

    /** Display a warning if the user is trying to leave the page with unsaved settings */
    if(bol_option_changed === true && bol_submit_clicked === false){
        return '';
    }


};

【问题讨论】:

    标签: javascript thickbox


    【解决方案1】:

    Thickbox 中没有要检查的固有函数,但是查看代码,您应该能够检查#TB_window 的存在和可见性:

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

    或者,尝试计算#TB_load的长度:

    var thickbox_shown = ($('#TB_load').length > 0) ? true : false;\
    

    【讨论】:

    • 我喜欢这个想法,但遗憾的是它不起作用。没有错误,它只是返回false,即使Thickbox 已打开。 #TB_window 在这一点上存在,所以不确定发生了什么......
    • 很奇怪。该代码在原理方面绝对有效:jsfiddle.net/nnFtu
    • 好的,我会更新我上面的评论;当我在Thickbox 中并更改页面或单击“保存所有更改”时,上述代码返回false。但是,如果我刷新页面 (F5),我首先会看到 true 返回,然后是 false。我对这里可能发生的事情感到有些困惑......
    • 附注我在使用length > 0 时也得到了相同的结果。我相信您的解决方案是可靠的,但我不知道为什么它没有按预期工作。难道window.onbeforeunload() 不会承认Thickbox,因为它是一个iframe?
    • 所以我有一个解决方案 - 我更改了我的代码以检查是否显示“设置警告”以反映您建议的代码以查看是否显示了厚框,使用 @987654333 @,现在它似乎工作了。感谢昨天的帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 2017-05-26
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 2011-05-11
    相关资源
    最近更新 更多