jquery实现Please Wait对话框 - safari特定问题

时间:2011-12-12 16:08:42

标签: javascript jquery jquery-ui jquery-ui-dialog

我的目标是显示一个非模态jquery-ui对话框,它将显示一个请等待消息以及一个加载动画。此对话框将显示在用户来自的页面上,而不是继续进行。我在很大程度上已经使用下面的代码。但是,Safari不会显示请等待对话框。 Firefox和Chrome显示对话框并跟随href。 Safari只跟随href,但不会显示对话框。

如果我尝试使用preventDefault();或者返回虚假;在click事件处理程序中,safari(和所有浏览器)将显示please wait对话框,但当然它不会跟随href。所以我确实想要转到点击的href的默认行为,只是在转到href时,我想要显示对话框。

我甚至尝试过点击处理程序并在里面做一个preventDefault(),然后打开对话框,然后设置window.location或location.href,但是Safari仍然会跟随href而不显示对话框。< / p>

有没有人有其他想法?

的javascript:

    $(document).ready(function() {

        // Register the pleaseWaitDialog element as a jquery-ui dialog widget with certain options set 
        $("#pleaseWaitDialog").dialog({
            autoOpen: false,
            buttons: {},
            open: function(event, ui) { $(".ui-dialog-title, .ui-dialog-titlebar-close").hide(); }, // hide the dialog title bar 
            resizable: false,
            show: {effect: 'fade', duration: 500},
            height: 120,
            width: 300
        });

        // When a link to add a meeting is clicked, then display the please wait dialog 
        $("a.addMeetingLink").click(function(e) {
            // But wait 5 seceonds before displaying the please wait dialog 
            setTimeout(function () {
                $("#pleaseWaitDialog").dialog("open");
            }, 5000);
        });

    }); 

HTML:

<a href="/ripplemobile/trip/addmeeting/81/1/305/308" class="addMeetingLink">Add Meeting</a>

<div id="pleaseWaitDialog">
    <div>
        <p>Please wait</p>
        <img src="/ripplemobile/images/ajax-loader.gif" />
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

快速点,编辑此功能:

// When a link to add a meeting is clicked, then display the please wait dialog 
        $("a.addMeetingLink").click(function(e) {

            // ADD

            e.preventDefault();

            // But wait 5 seceonds before displaying the please wait dialog 
            setTimeout(function () {
                $("#pleaseWaitDialog").dialog("open");
            }, 5000);
        });

这可以解决您当前的问题。