Javascript 请等待对话框的jquery实现-safari特定问题

Javascript 请等待对话框的jquery实现-safari特定问题,javascript,jquery,jquery-ui,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Jquery Ui Dialog,我的目标是显示一个非模态jqueryui对话框,该对话框将显示一条请等待消息以及一个加载动画。此对话框将显示在用户来自的页面上,而不是继续。我基本上已经在使用下面的代码了。但是,Safari不会显示“请稍候”对话框。Firefox和Chrome显示对话框及以下href。Safari只跟随href,但不会显示对话框 如果我尝试使用默认值();或报税表虚假;在click事件处理程序中,safari(和所有浏览器)将显示please wait(请等待)对话框,但它当然不会跟随href。因此,我确实希望

我的目标是显示一个非模态jqueryui对话框,该对话框将显示一条请等待消息以及一个加载动画。此对话框将显示在用户来自的页面上,而不是继续。我基本上已经在使用下面的代码了。但是,Safari不会显示“请稍候”对话框。Firefox和Chrome显示对话框及以下href。Safari只跟随href,但不会显示对话框

如果我尝试使用默认值();或报税表虚假;在click事件处理程序中,safari(和所有浏览器)将显示please wait(请等待)对话框,但它当然不会跟随href。因此,我确实希望转到单击的href的默认行为,就在转到href时,我希望显示对话框

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

有人有其他想法吗

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:


请稍等


一个快速点,编辑此功能:

// 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);
        });

这将解决您当前的问题。

一个快速要点,编辑此函数:

// 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);
        });

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

我已经试过了。这将显示please wait(请等待)对话框(即使在Safari中),但它将不再转到锚定标记的href位置。那么,我如何跟随锚定标记并显示对话框呢?您的意思是显示对话框,然后在延迟后跟随href?跟随href时,当您移动到href目的地时,该对话框将关闭。如果您希望显示该对话框,然后继续到目的地。您可以在打开对话框后添加另一个超时,以转到destinationno延迟后不要跟随href。我希望遵循href,这是一个固有的延迟,因为它需要服务器时间来处理请求和提供响应。在等待服务器响应的过程中,我希望浏览器等待5秒钟,如果服务器仍然没有响应,则显示“请等待”对话框。然后,该对话框将一直显示,直到服务器最终响应为止。在这种情况下,该对话框将消失,并显示新页面。如果服务器在5秒钟前响应,那么用户甚至不会看到“请等待”对话框。我的原始代码满足这些要求,并在Firefox和Chrome中正常工作。Safari不起作用。在Safari中,会跟随href,但不会显示任何对话框。事实上,我可以完全删除setTimeout函数,尝试在单击链接时只显示please wait对话框,但它仍然不会显示对话框。它将只等待服务器响应,并最终转到href url。Safari出人意料的行为是我问题的关键。你明白了吗?我也有同样的问题,我试过这个。这将显示please wait(请等待)对话框(即使在Safari中),但它将不再转到锚定标记的href位置。那么,我如何跟随锚定标记并显示对话框呢?您的意思是显示对话框,然后在延迟后跟随href?跟随href时,当您移动到href目的地时,该对话框将关闭。如果您希望显示该对话框,然后继续到目的地。您可以在打开对话框后添加另一个超时,以转到destinationno延迟后不要跟随href。我希望遵循href,这是一个固有的延迟,因为它需要服务器时间来处理请求和提供响应。在等待服务器响应的过程中,我希望浏览器等待5秒钟,如果服务器仍然没有响应,则显示“请等待”对话框。然后,该对话框将一直显示,直到服务器最终响应为止。在这种情况下,该对话框将消失,并显示新页面。如果服务器在5秒钟前响应,那么用户甚至不会看到“请等待”对话框。我的原始代码满足这些要求,并在Firefox和Chrome中正常工作。Safari不起作用。在Safari中,会跟随href,但不会显示任何对话框。事实上,我可以完全删除setTimeout函数,尝试在单击链接时只显示please wait对话框,但它仍然不会显示对话框。它将只等待服务器响应,并最终转到href url。Safari出人意料的行为是我问题的关键。你明白了吗?我也有同样的问题。