Могу ли я отложить window.open ()? - PullRequest
1 голос
/ 02 апреля 2010

Итак, вот моя основная проблема.

Пользователь нажимает кнопку сохранения.
Используйте Ajax для сохранения содержимого с помощью кода. ТО откройте новое окно, которое загружает контент из БД.

Мне просто нужен способ не открывать окно, пока контент не будет сохранен.Прямо сейчас он немедленно открывает новое окно, и содержимое еще не все сохранено.

Есть идеи?

РЕДАКТИРОВАТЬ:
Извините, я думаю, мне следовало быть более яснымЯ использую панель обновления asp.net, и кнопка, которую я нажимаю, запускает панель обновления, чтобы сохранить некоторую информацию в БД, а затем я хочу открыть новое окно, которое «просматривает» эти новые данные.Итак, вот что у меня есть, и оно не ломается, но и не открывает новое окно.

protected void lnkPreview_Click(object sender, System.EventArgs e)
{
      temp1 control = UpdatePanel1.ContentTemplateContainer.FindControl("template") as temp1;
      control.saveContent();

      string script = "<script language='javascript'>window.open('/preview.aspx', '_blank');</script>";
      this.Page.ClientScript.RegisterClientScriptInclude(this.GetType(),"ClientScriptStuff", script);
}

Ответы [ 6 ]

4 голосов
/ 02 апреля 2010

Ваш вызов AJAX позволяет вам выполнить обратный вызов завершения, который будет выполнен, когда сервер ответит.

Вам нужно позвонить туда window.open.
Для более подробной информации, пожалуйста, покажите нам свой код.

Однако остерегайтесь блокировщиков всплывающих окон.

3 голосов
/ 02 апреля 2010

Я хотел бы рассмотреть возможность открытия пустого / альтернативного окна контента сразу после действия пользователя, а затем установить местоположение окна после завершения обратного вызова. Таким образом, вы будете более защищены от всплывающих окон.

2 голосов
/ 02 апреля 2010

Используйте обратный вызов после завершения ajax для загрузки содержимого БД в окно MODAL.

Пример использования jQuery с плагином facebox :

$("form").submit(function(){
    var form = $(this);
    $.ajax({
        "url" : form.attr("action")||document.location.toString(),
        "type" : form.attr("method")||"get",
        "data" : form.serialize(),
        "success" : function(data){
            $.facebox({"ajax" : "popupwindowURL.htm?data="+data});
        }
    });
    return false;
});

Я просто хочу отметить, что вы должны добавить обратный вызов ошибки в приведенный выше фрагмент. И вы также должны предотвратить отправку нескольких форм.

0 голосов
/ 14 апреля 2010
protected void lnkPreview_Click(object sender, System.EventArgs e)
{
         //Save the page content

         //Open a page to preview the changes
         ScriptManager.RegisterClientScriptBlock(UpdatePanelName, typeof(Page), "previewPage", "window.open('/preview.aspx');", true);
 }
0 голосов
/ 02 апреля 2010

Получите ответ о сохранении с помощью метода Ajax и запустите window.open при получении подтверждения сохранения.

0 голосов
/ 02 апреля 2010

Настройка функции window.open () в качестве обратного вызова из результата AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...