JQuery Colorbox в качестве экрана загрузки - иногда не закрывается

ОБЗОР: я использую JQuery Colorbox для отображения небольшого значка загрузки, когда заказ обрабатывается на моем веб-сайте. У небольшого процента пользователей поле цвета не закрывается само по себе и просто зависает. Это основная концепция:

Страница заказа загружает ссылку в цветовое поле, используя:

$(document).ready(function () {
    $("[rel=cbox_order]").colorbox({
        initialWidth: "100",
        initialHeight: "100",
        innerWidth: "300",
        innerHeight: "100",
        iframe: true,
        opacity: 0.75,
        overlayClose: false,
        title: 'Your order is being processed, please wait...',
        onLoad: function () {
            $('body').css({
                overflow: 'hidden'
            });
            $('#cboxClose').remove();
            $('#cboxLoadedContent').css({
                'margin-bottom': '0px',
                'height': '100%'
            });
            $(document).unbind("keydown.cbox_close");
        },
        onComplete: function () {
            $('#cboxLoadingGraphic').show();
            $('#cboxLoadedContent').css({
                'margin-bottom': '0px',
                'height': '100%'
            });
        },
        onClosed: function () {
            $('body').css({
                overflow: 'auto'
            });
        }
    });

    $("[rel=cbox_order]").click(function () {
        $("#colorbox").attr("style", "padding-bottom: 42px; padding-right: 42px; display: inline; width: 600px; height: 468px; top: 456px; left: 602px;");
    });
});

<asp:HyperLink id="lnkConfirm" class="buttonlink" rel="cbox_order" NavigateURL="~/ProcessOrder/ProcessPayment.html" Text="CONFIRM ORDER" runat="server"  />

Это в основном переопределяет множество битов и ОСТАНАВЛИВАЕТ пользователя, закрывающего окно, пока заказ обрабатывается. Страница, которая была загружена в ColorBox, затем обрабатывает заказ и отправляет электронные письма с подтверждением, ТОГДА делает:

$(document).ready(function(){
    window.top.location.href = '<%=Session["ProcessOrder_Redirect"].ToString()%>';
    window.parent.$.fn.colorbox.close();
});

Идея в том, что он перенаправляет родительское окно на страницу подтверждения заказа, а затем закрывает окно (только для подтверждения; это работает в 95% случаев).

ПРОБЛЕМА: это не всегда работает, и я не понимаю, почему. Я могу подтвердить, что значение в сеансе содержит действительный URL-адрес. Я ввел alert(<%=Session["ProcessOrder_Redirect"].ToString()%>); после colorbox.close(), и он появился (и остался там) для пользователей, которые застряли с действительным URL-адресом. Я не могу воспроизвести эту ошибку, поэтому я несколько застрял.

Мои мысли только о том, что а. Перенаправление не работает (в настоящее время ожидается дополнительная информация, чтобы подтвердить это) или B. ColorBox дает сбой и просто не закрывается.

Кто-нибудь может помочь мне разгадать эту загадку?

РЕДАКТИРОВАТЬ: кажется, что это ошибка перенаправления. Кто-нибудь знает, почему это не всегда работает.

Спасибо


person webnoob    schedule 05.07.2011    source источник


Ответы (1)


В итоге я добавил ссылку вручную, чтобы пользователь мог щелкнуть ее, если он застрял. Кажется, разобрался с этим на данный момент, но до сих пор не знаю, что вызвало проблему.

person webnoob    schedule 25.07.2011