2010-04-02 122 views
1

所以這裏是我的基本問題。我可以延遲window.open()嗎?

用戶單擊保存按鈕。
使用Ajax通過代碼隱藏保存內容。
然後打開一個新窗口,加載數據庫中的內容。

我只是需要一種方法,直到內容已被保存,才能打開窗口。現在它立即打開一個新窗口,內容還沒有全部保存。

任何想法?編輯:
對不起,我想我應該更清楚。我正在使用asp.net updatepanel,點擊按鈕觸發更新面板,將一些信息保存到數據庫,然後打開一個「預覽」這個新數據的新窗口。所以這裏是我所擁有的,它不會中斷,但它也不會打開一個新窗口。

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); 
} 
+1

我會遠離使用window.open()。還有其他更方便用戶的選擇。 – 2010-04-02 19:01:58

回答

0
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

設置window.open()函數作爲AJAX結果的回調函數。

+0

這不會由用戶操作啓動,因此可能會被彈出式窗口攔截器阻止。 – spender 2010-04-02 18:26:22

4

您的AJAX調用允許您有一個完成回調,當服務器回覆時會執行回調。

您需要在那裏撥打window.open
有關更多詳細信息,請向我們顯示您的代碼。

但是,要小心彈出式窗口攔截器。

+0

+1彈出窗口阻止程序 – spender 2010-04-02 18:26:43

+0

我看到你在做什麼,但我試圖從updatepanel做到這一點。 – MisterIsaak 2010-04-05 16:50:23

0

使用Ajax方法獲取保存的響應,並在收到保存確認後觸發window.open。

3

我會考慮在用戶操作時立即打開一個空白/替代內容窗口,然後在回調完成時設置窗口位置。這樣你應該對彈出阻塞更加免疫。

2

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

我只是想指出,你應該添加一個錯誤回調到上面的代碼片段。你也應該防止多個表單提交。

相關問題