car*_*son 8 html javascript iframe internet-explorer-11
当我以管理员身份运行Internet Explorer时,我看到了对window.open()的调用的不同行为.我无法在jsfiddle/codepen等sanboxed iframe环境中重现它,但我会尽力在这里解释这个问题.
在IE中,没有以管理员身份运行,当我按下"清空"按钮时,它会调用window.open("",windowname,...)并出现一个新的空白窗口.接下来,我按下"Full"按钮,它会调用window.open(" http://www.google.com ",windowname,..)以及旧的空白窗口设置为Google的内容.
在IE中,以管理员身份运行时,不会覆盖初始空白窗口.相反,空白窗口旁边会出现一个带有Google的新窗口.
我在下面提供了我的测试代码.我不确定它在iframe中的事实是否相关,但我包括它以防万一
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<iframe src="http://127.0.0.1:8888/">
</iframe>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
来自http://127.0.0.1:8888/的来源看起来像
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var windowname = "TESTWINDOW";
var features = "menubar=no, location=no, resizable=yes, status=yes, width=500, height=500";
function doEmpty(e) {
window.open("", windowname, features);
}
function doFull(e) {
window.open("http://www.google.com", windowname, features);
}
</script>
<style>
body {
width: 1000px;
height: 1000px;
}
</style>
</head>
<body>
<button onclick="doEmpty()">Empty</button>
<button onclick="doFull()">Full</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
window.open() 的行为取决于一些因素,尤其是在 Internet Explorer 中。
由于您提供了宽度/高度参数,浏览器应该以弹出窗口的形式打开新窗口(如果您已设置允许这样做) - 如果您删除宽度/高度,浏览器通常会在新选项卡中打开。
由于您的窗口名称被重复使用,并且不包含空格或连字符,因此浏览器应该为两者重复使用相同的窗口实例。(如果你有空格或连字符,IE 会阻塞并且无法打开弹出窗口(已知的 IE 错误))。
“TESTWINDOW”对此可能足够独特,但也要注意 IE 有一个错误,如果您有另一个站点尝试调用 window.open() 并且它们使用与您/您的站点相同的窗口名称,则浏览器将重新使用该弹出窗口。IE 无法正确地将它们“命名空间”到域(已知错误)。
现在,在某一时刻(IE7/8?)微软改变了一些关于启动位置为“”(空字符串)和/或“about:blank”或“javascript:;”的窗口的行为。或“javascript:void;” 等等,以至于它们在与打开它们的域相同的级别上不受信任。您可能遇到与此相关的问题。(如果您使用 2 个不同但“真实”的 URL,我很好奇行为是否更好)。
由于新的弹出窗口是一个命名窗口,如果 iframe 或其父窗口的名称为“TESTWINDOW”,您也会得到一些奇怪的结果。
最后,您指出根据登录用户的不同,您会得到不同的结果。由于 IE 中的设置是针对每个用户的,因此您很可能会看到不同的设置。例如,您的配置文件之一在兼容模式列表中是否包含您的域(或本地主机)?或者您的个人资料之一是否有不同的弹出窗口阻止规则或隐私设置?
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |