none
關閉視窗

    問題

  • 請問各位大大,

     

    我在網頁中有個button,當按下這個button時,會關閉這個網頁,程式如下,

     

      

    程式碼區塊
    Protected Sub Btn_Cancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_Cancel.Click
            Response.Write("<script> window.close();</script>")
        End Sub

     

     

    可是在關閉網頁前,系統會先跳出一個視窗,其訊息是"您正在檢視的網頁嘗試要關閉視窗,您是否要關閉此視窗?"

     

    請問如何不要讓系統跳出這個視窗?

     

    多謝.

    2008年1月5日 上午 07:24

解答

  • 基本上,新版的 IE 都因為安全性的問題不允許強制關閉主視窗,但自己透過 window.open() 開啟的視窗可以控制強制關閉。另外 IE 7 也好像有個漏洞可鑽,看我最後一個範例。

     

    如果你用舊版的 IE 的話,底下這段可以用,還蠻好玩的,透過 ActiveX 物件關閉,但預設的安全性只能在本機執行。

    程式碼區塊

     

    <object id="objMin" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Minimize"></object>

    <object id="objMax" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Maximize"></object>

    <object id="objClose" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Closes"></object>

     

    <a href="javascript:objMin.Click()">最小化視窗</a> |
    <a href="javascript:objMax.Click()">最大化視窗</a> |
    <a href="javascript:objClose.Click()">關閉視窗</a>

     

    而底下這招只有在 IE 6 管用而已:

    程式碼區塊

     

    window.opener=null;   
    window.close(); 

     

     

    至於 IE7 要用以下這招(不知道算不算是 IE7 的漏洞?)

    程式碼區塊

     

    <a href="javascript:void(window.open('','_parent',''));window.close(); ">關閉視窗</a>

     

     

    ----
    From: Will
    Blog: http://blog.miniasp.com/
    記載著 Will 在網路世界的學習心得與技術分享

    2008年1月5日 上午 08:26

所有回覆

  •  當我們用這種方法:Response.Write("<script>window.close()</script>")  
    總是提示什麼:你查看的網頁試圖關閉的提示  
    如何去掉提示,直接關閉窗體?  
    可以用以下方法:  
    Response.Write("<script>window.opener=null;window.close()</script>")   

    opener只要設為任何值都可以,不會出現提示  

    2008年1月5日 上午 07:38
  • HI,

     

    只能做到關閉使用Javascript顯示的瀏覽器視窗, 不要出現詢問畫面, 無法關閉主要的瀏覽器視窗, 而不要出現詢問畫面, 這是瀏覽器安全管制功能的一環

     

    tihs

     

    2008年1月5日 上午 07:59
  • 基本上,新版的 IE 都因為安全性的問題不允許強制關閉主視窗,但自己透過 window.open() 開啟的視窗可以控制強制關閉。另外 IE 7 也好像有個漏洞可鑽,看我最後一個範例。

     

    如果你用舊版的 IE 的話,底下這段可以用,還蠻好玩的,透過 ActiveX 物件關閉,但預設的安全性只能在本機執行。

    程式碼區塊

     

    <object id="objMin" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Minimize"></object>

    <object id="objMax" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Maximize"></object>

    <object id="objClose" type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"><param name="Command" value="Closes"></object>

     

    <a href="javascript:objMin.Click()">最小化視窗</a> |
    <a href="javascript:objMax.Click()">最大化視窗</a> |
    <a href="javascript:objClose.Click()">關閉視窗</a>

     

    而底下這招只有在 IE 6 管用而已:

    程式碼區塊

     

    window.opener=null;   
    window.close(); 

     

     

    至於 IE7 要用以下這招(不知道算不算是 IE7 的漏洞?)

    程式碼區塊

     

    <a href="javascript:void(window.open('','_parent',''));window.close(); ">關閉視窗</a>

     

     

    ----
    From: Will
    Blog: http://blog.miniasp.com/
    記載著 Will 在網路世界的學習心得與技術分享

    2008年1月5日 上午 08:26
  • 己解決, 多謝.

     

    2008年1月5日 下午 03:26
  • 您好

    請問我用這

    Response.Write("<script language=javascript> window.opener=null; window.open('','self'); window.close();</script> ")

    為何系統總跳出

    sys.webtorms pagerequest............

    以上謝謝

    2008年1月10日 上午 02:34
  • 您程式中有用到ASP.NET AJAX?

    If 是 then

        use  ScriptManager.registerscriptBlock() 註冊script (Method Name也許不完全正確,請尋找約略名稱)

    else

        請再說明

    End If

     

    2008年1月10日 上午 03:00
    版主
  • 您好

    有用ajax

    我來查help

    若您有key doc,也請您幫我貼連結

    謝謝您

     

    2008年1月10日 上午 03:11
  • 建議你你如果有用 Microsoft AJAX 就盡量不要用 Response.Write 輸出資料。


    ----
    From: Will
    Blog: http://blog.miniasp.com/
    記載著 Will 在網路世界的學習心得與技術分享
    2008年1月10日 上午 03:26
  • 2008年1月10日 上午 03:29
    版主
  • 謝謝您

    我採用小舖Jeff

    ScriptManager.RegisterStartupScript(Me, Me.GetType(), "close", "window.close();", True)

    已經可以關閉網頁

    但關閉前會有詢問對話框

    不知可否不要出現!

    之前 搜尋有說ie6可以

    ie7安全問題---不能

    fox------也是不能

    以上敬請協助

    謝謝您

    2008年1月10日 上午 04:35
  • 上面的討論串有IE6的解決方法

    至於說「不能」的瀏覽器,目前就是不能了...Orz

     

    2008年1月10日 上午 05:14
    版主
  • 這一招在IE8試過也行的通

    void(window.open('','_parent',''));

    window.close();

    謝謝保哥分享!

    2011年5月23日 上午 02:05