2

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

我的代码如下所示:

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

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

4

5 回答 5

4

出于安全原因,浏览器已停止侦听某些参数。例如,FF3+ 和 IE6 / 7+ 强制使用地址栏来防止诈骗者假装是他们不是的网站。

相关:Internet Explorer 7 安全状态栏

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

如果您需要更多自由,并且碰巧可以控制用户的计算机(例如在封闭的 Intranet 中),可以使用Mozilla Prism之类的解决方案,让网站看起来更像桌面应用程序。但这些是不适合普通网站的高度专业化解决方案。

于 2010-10-01T16:55:56.653 回答
3

是的,某些参数被禁用。原因是应该不可能打开一个伪装成其他东西的窗口。

确切的规则取决于浏览器、页面范围(内联网/公共)和用户设置。大多数浏览器不会删除地址栏,因此您可以随时查看页面的来源。

例如,您可以在此处阅读有关Internet Explorer 的限制

一些报价:

“用于 Windows XP SP2 的 Internet Explorer 6 要求窗口标题栏和状态栏始终位于显示器的可见区域;如果显示地址栏,它也必须保持可见。通过对脚本打开的窗口设置这些限制, “窗口限制安全功能可防止恶意代码隐藏信息和欺骗用户界面。Internet 区域默认启用窗口限制功能,本地 Intranet 和受信任站点区域默认关闭该功能。”

和:

“状态栏是一种 Internet Explorer 安全功能,可为用户提供 Internet Explorer 安全区域信息。在 Windows XP SP2 的 Internet Explorer 6 之前,状态栏可以通过调用 window.open 方法的脚本对用户隐藏。由于隐藏了状态栏,用户可能会被欺骗,以为他们在与恶意主机交互时认为他们在受信任的站点上。

设置了窗口限制后,window.open 方法创建的任何窗口都不能关闭状态栏;它对所有 Internet Explorer 窗口始终可见。状态栏包含的区域信息不能被欺骗或隐藏,因此用户始终知道内容显示在哪个安全区域中。”

这是关于 IE 6 的,因为那时它被引入。IE 7 中还有一些进一步的变化,但这主要与导航的变化有关,使open命令的某些参数工作方式不同或已过时。

于 2010-10-01T17:00:00.667 回答
1

由于安全模型的变化,不可能再有一个完全没有镶边的弹出窗口,并且试图去掉所有镶边的尝试将被忽略。您是否考虑过使用 JQuery 创建一个外观像窗口的伪弹出窗口,并为其提供拖动处理程序和关闭按钮?您可以优雅地降级为标准弹出窗口。

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

于 2010-10-01T17:00:23.900 回答
0

大多数浏览器默认显示位置栏和状态栏,并且也无法覆盖window.status. 这样做是为了安全(防止网络钓鱼)。

于 2010-10-01T16:56:17.087 回答
0

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

从 IE 安全选项卡的“自定义级别”对话框 - 向下滚动到:

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

根据这些设置为禁用还是启用 - 您将看到应用程序的不同行为。

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

于 2011-12-29T19:47:02.143 回答