У меня есть страница в одном из моих приложений ASP.NET(VB), которая полагается на сторонний сервис, который живет, и я использую jQuery для отображения наложения, если эта служба окажется недоступной. Я использовал тот же подход для других предупреждений в приложении - разница в этом заключается в том, что он должен перенаправляться после того, как пользователь нажимает кнопку во всплывающем окне предупреждения, чтобы удалить оверлей. Я пробовал несколько разных вещей, но во всех случаях перенаправление происходит до того, как предупреждение о наложении будет даже видимым. Я понимаю, почему, я просто не могу найти решение, чтобы исправить это. Любая помощь очень ценится! Я использую следующий код:
JQuery
function warn_redirect(msg, title, nextpage) {
// show modal div
//alert(obj.id);
$("html").css("overflow", "hidden");
$("body").append("<div id='popup_overlay'></div><div id='popup_window'></div>");
$("#popup_overlay").addClass("popup_overlayBG");
$("#popup_overlay").fadeIn("slow");
// build warning box
$("#popup_window").append("<h1>" + title + "</h1>");
$("#popup_window").append("<p id='popup_message'><center>" + msg + "</center></p>");
$("#popup_window").append("<div class='buttons'><center><button id='continue' class='positive' type='submit'>OK</button></center></div>");
// attach action to button
$("#continue").click(popup_remove_redirect(nextpage));
// display warning window
popup_position(400, 300);
$("#popup_window").css({ display: "block" }); //for safari using css instead of show
$("#continue").focus();
$("#continue").blur();
}
function popup_remove_redirect(nextpage) {
$("#popup_window").fadeOut("fast", function () { $('#popup_window,#popup_overlay').trigger("unload").unbind().remove(); });
$("body", "html").css({ height: "auto", width: "auto" });
$("html").css("overflow", "");
window.location.href = nextpage;
}
(Я добавил window.location.href в свой стандартный код удаления всплывающих окон, но я пробовал другие подходы, включая запуск двух действий с нажатия кнопки.)
Вот код вызова VB.NET:
If Status = "DOWN" Then
Dim clsUtility As New Utility
clsUtility.Emailer("[email protected]", "[email protected]", "", "", "The Service Is Down!", "Please investigate")
Dim ScriptString As String = "<script language='javascript'>"
ScriptString += "warn_redirect('Some warning message.', 'Warning', 'AnotherPage.aspx');"
ScriptString += "</script>"
ClientScript.RegisterStartupScript(Me.GetType, "warnscript", ScriptString)
'Response.Redirect("AnotherPage.aspx?ID=" & Session("SelKey") & "&UN=" & Header1.UserNumber) //this didn't work either
End If
Вы звоните прямо сейчас:
$("#continue").click(popup_remove_redirect(nextpage));
Вы хотите сделать:
$("#continue").click(function() { popup_remove_redirect(nextpage); });