簡體   English   中英

Window.Open() 正在更改 Internet Explorer 上的頁面布局

[英]Window.Open() is changing the page Layout on Internet Explorer

我在 asp.net 中有一個名為Home.aspx的頁面。 它使用一個母版頁,還有一個按鈕調用:

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

結果:新標簽頁用page2.aspx打開,如果您返回Home.aspx ,頁面布局被修改,中央<div>移動到頁面左側。

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

非常感謝。

不考慮你為什么這樣做的優點,你的Response.Write可能會殺死 Home.aspx 頁面中的 HTML/CSS/JS 輸出並阻止它正確加載。 嘗試使用:

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

而不是 Response.Write,所以一旦頁面加載它就會打開你的窗口。

通常,如果您想從ScriptManager背后的代碼編寫腳本,則是您的朋友。 啟動腳本在預渲染后發生,卸載腳本在關閉時發生,您可以根據調整大小等事件設置它們。

您的 div 移動與翻頁有關,而不是特定按鈕的服務器代碼。 使用

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

在你的按鈕 asp 標簽中使用 onclientclick="mybutton" 避免了這種情況下的回發。 除此之外,您可能有不正確的 css 或在翻頁時觸發的代碼,這些代碼在您回發后仍會移動您的 div。

如果有人會發現它有用,這里是對我有用的確切答案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM