【问题标题】:Knowing whether window.close() will show a security warning了解 window.close() 是否会显示安全警告
【发布时间】:2010-12-09 00:57:48
【问题描述】:

在 IE7 中,使用window.open 打开的子窗口可以使用window.close() 自行关闭,但如果子窗口尝试自行关闭,使用<a href=... target=_blank> 打开的窗口会显示安全警告。

在我的应用程序中,我不知道我的子窗口是如何打开的,我需要知道(在子窗口 JavaScript 代码中)我是否可以使用window.close()。有办法吗?另一种提问方式是 - IE 中是否有办法区分通过 window.open 打开的窗口与通过 target=_blank 打开的窗口。

我尝试检查window.opener,但在这两种情况下,都有一个值,所以这不允许我区分这两种情况。

【问题讨论】:

    标签: javascript html internet-explorer


    【解决方案1】:

    只是一个盲目的拍摄,但您可以尝试删除窗口中的 onunload 事件,以防万一。

    【讨论】:

    • 你是个天才!我永远不会想到删除警告是如此简单。它至少在 IE8 中工作。也将在 IE7 中检查它。
    • 不。我的错。我可能希望它有效,但它没有。顺便说一句,onunload 事件发生在 window.close 警告发生之后。
    【解决方案2】:

    如果您可以控制 window.open 事件,则可以为新窗口命名(我认为是第二个参数)。然后,您可以在应用 window.close() 之前检查该名称。

    【讨论】:

    • 是的,这行得通,只是我无法控制开头!
    【解决方案3】:

    尝试比较 window.opener 和 window.self

    【讨论】:

    • 不幸的是,window.opener 在这两种情况下都是正确的,即打开这个子窗口的父窗口。
    【解决方案4】:

    来源:Close window without the prompt message in IE7

    根据上面的页面,这是如何避免提示的:

    function WinClose(){
        window.open('','_self','');
        window.close();
    }
    
    <a href="#" onclick="WinClose();return false;">Close</a>
    

    这对您的网页来说是一种可行的方法吗?

    【讨论】:

    • 这行得通。谢谢。我现在还有其他特定于 IE8 的问题,但我想我会在另一个问题中发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多