代码之家  ›  专栏  ›  技术社区  ›  EmmyS

浏览器在通过javascript打开新窗口时会忽略窗口参数吗?

  •  2
  • EmmyS  · 技术社区  · 14 年前

    我正在通过javascript打开一个弹出窗口。我正在尝试设置一些显示参数-特别是我们想隐藏位置和状态栏,但我在其中测试的每个浏览器中,位置和状态栏仍然显示。

    我的代码如下所示:

    newwindow=window.open(url,'name','height=250,width=290,left=200,top=200,location=no,resizable=yes,scrollbars=yes,toolbar=no,status=no');
    

    有什么想法吗?客户端坚持使用弹出窗口,而不是悬停工具提示。

    6 回复  |  直到 14 年前
        1
  •  3
  •   Guffa    14 年前

    是,某些参数已禁用。原因是不可能打开一扇假装是别的东西的窗户。

    具体规则取决于浏览器、页面范围(intranet/public)和用户设置。大多数浏览器不会删除地址栏,因此您可以随时看到页面的来源。

    例如,你可以在这里阅读 restrictions in Internet Explorer .

    一些引语:

    SP2要求窗口标题 状态栏和状态栏始终位于 显示的可见区域;如果 保持可见。把这些 对脚本打开窗口的限制, 防止恶意代码从 隐藏信息和防止欺骗 默认情况下,限制功能处于启用状态 对于Internet区域和功能 默认情况下,对于本地 Intranet和受信任的站点区域。”

    以及:

    Explorer安全功能 资源管理器安全区域信息。 Internet Explorer 6之前的版本 通过脚本对用户隐藏 那叫窗口打开方法。与 从视图中隐藏的状态栏,用户 可能会被欺骗而认为 他们在一个值得信任的网站上

    有了窗口限制后 无法为关闭状态栏 由打开新窗口 状态栏显示的信息 无法欺骗或隐藏包含 知道在哪个安全区 正在显示内容。“

    这是关于IE6的,因为这就是它被引入的时候。在IE7中有一些更进一步的变化,但这主要与导航的变化有关,使得一些参数 open 命令工作方式不同或过时。

        2
  •  4
  •   Pekka    14 年前

    出于安全原因,浏览器已停止侦听某些参数。例如,FF3+和IE6/7+强制设置一个位置栏,以防止骗子假装不是他们的网站。

    The Internet Explorer 7 Security Status Bar

    无论何时你访问任何网站,你都应该查看网站的完整地址(URL),以了解你在看什么网站。IE7通过在每个窗口中强制显示地址栏来帮助您,但是您可能仍然需要滚动它或最大化窗口以查看完整的地址。

    如果你 更大的自由度,并且碰巧对用户的计算机有一些控制(例如在封闭的内部网中),有如下解决方案 Mozilla Prism 使网站看起来更像桌面应用程序。但这些都是高度专业化的解决方案,不适合普通网站。

        3
  •  1
  •   FatherStorm    14 年前

    由于安全模型的变化,它不可能有一个完全无铬弹出窗口任何更多的尝试剥离所有的铬将被忽略。您是否考虑过使用JQuery来创建一个伪弹出窗口,它的外观看起来像一个窗口,给它一个拖动处理程序和一个关闭按钮?您可以优雅地降级为标准弹出窗口。

    http://jqueryui.com/demos/draggable/

        4
  •  1
  •   Community CDub    7 年前

    进一步谈到父亲风暴所说的,这里有一些选择:

    How to generate a simple popup using jQuery

        5
  •  0
  •   Lekensteyn    14 年前

    window.status . 这样做是为了安全(防止网络钓鱼)。

        6
  •  0
  •   Adam    13 年前

    有关用户如何更改允许Javascript将状态和/或地址设置为隐藏或可见的设置的更具体信息:

    “允许网站打开没有地址栏或状态栏的窗口”

    据我所知,这适用于IE7、IE8和IE9