2013-08-07 55 views
3

我有一個網頁在asp.net稱爲Home.aspx。它使用一個母版,也有一個按鈕,在呼喚:Window.Open()被修改的頁面佈局上的Internet Explorer

Response.Write("<script> window.open('page2.aspx','_blank'); </script>") 

結果:新標籤是page2.aspx開放,如果你回到Home.aspx,頁面佈局進行修改,中央<div>被移動到頁面的左側。

我可以做些什麼來解決這個問題?請記住,這隻發生在Internet Explorer上,Firefox正常工作!

非常感謝。

回答

1

爲什麼要這樣做,你的Response.Write可能會在Home.aspx頁面中殺死HTML/CSS/JS輸出並阻止它正確加載。嘗試使用:

ScriptManager.RegisterStartupScript(typeof(Page), 
      "OpenPage2", "window.open('page2.aspx','_blank');", true); 

而不是Response.Write,所以只要頁面加載它將打開你的窗口。

+0

謝謝@ F.Aquino,我會測試並返回結果! –

1

一般來說,如果你想從背後ScriptManager代碼寫劇本是你的朋友。啓動腳本在預渲染之後發生,卸載腳本發生在關閉狀態,您可以根據事件(如調整大小)設置腳本。

那你的DIV移動有關,翻頁,而不是特定的按鈕的服務器代碼。使用

<script language="javascript" type="text/javascript"> 
     function mybutton() { 
      window.open('page2.aspx', '_blank'); 
      return false; 
     } 
    </script> 

與您的按鈕ASP標籤的的OnClientClick =「myButton的」避免在這種情況下,回發。 除此之外,你可能有不當的CSS或代碼,上翻頁仍然會只要你回傳移動你的div觸發。

1

萬一有人會發現它很有用,這裏是爲我工作了確切答案:

http://www.schnieds.com/2008/06/css-lost-on-postback-in-aspnet.html

所以,在OP的情況下,而不是

Response.Write("<script> window.open('page2.aspx','_blank'); </script>") 

,將工作:

 String myScript = "<script> window.open('page2.aspx','_blank'); </script>"; 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "myScript", myScript); 
相關問題