我有一個單擊事件按鈕,我希望當用戶單擊它來打開另一個頁面,但是來自同一個問題。在另一個選項卡中打開另一個asp.net頁面
我想這
Response.Write("<script>window.open('http://www.google.com.hk/','_blank');</script>");
但問題是,它會打開的頁面不是在新標籤
我怎樣才能在新標籤中打開它?
我有一個單擊事件按鈕,我希望當用戶單擊它來打開另一個頁面,但是來自同一個問題。在另一個選項卡中打開另一個asp.net頁面
我想這
Response.Write("<script>window.open('http://www.google.com.hk/','_blank');</script>");
但問題是,它會打開的頁面不是在新標籤
我怎樣才能在新標籤中打開它?
試試這個
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key", "window.open('http://www.google.com.hk/','_blank');", true);
它正在工作,但我正在尋找一些解決方案,我只是把網頁的名稱,沒有完整的網址,因爲我不知道客戶將在哪個端口上部署此應用程序。請你幫忙 – 2015-04-06 10:44:02
但是它會映射到一些域? – Mairaj 2015-04-06 10:46:50
我改變了喲這個'ScriptManager.RegisterClientScriptBlock(this,this.GetType(),「key」,「window.open('EmailTemplate.aspx?emailAddress ='+ emailAddress +'','_ blank');」,true);'現在它正在工作,但你認爲這是正確的嗎?加上一個,我會接受你的答案,當系統允許 – 2015-04-06 10:47:51
我寧願用RegisterStartupScript
而不是RegisterClientScriptBlock
。
以下是使用RegisterStartupScript
的方法。你應該在你的情況下使用它。
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "ReportPage", "javascript:window.open('EmailTemplate.aspx?emailAddress="+emailAddress+"','_blank');", true);
因爲當你使用RegisterStartupScript
,它會在頁面(表單的結束標籤前右)的所有元素渲染後,你的腳本。這使腳本可以調用或引用頁面元素,而不會在頁面的DOM中找到它們。
另一方面,當您使用RegisterClientScriptBlock
時,該腳本會緊接在Viewstate
標記之後,但在任何頁面元素之前呈現。由於這是一個直接腳本(不是可以調用的函數,它會立即被瀏覽器執行,但是瀏覽器在這個階段沒有在頁面的DOM中找到標籤,因此你應該會收到一個「找不到對象」錯誤。
更多細節現在參觀this答案。
如果你發現自己使用'Response.Write'注入代碼或標記到網頁,你這樣做是不對的。總有一個更好的辦法。 – mason 2015-04-06 13:23:31