window.open(...) 运行 Internet Explorer 11 作为管理员时的不同行为
Different window.open(...) behaviour when running Internet Explorer 11 as Administrator
当 运行 Internet Explorer 作为管理员时,我看到调用 window.open() 的不同行为。我无法在 jsfiddle/codepen 等 sanboxed iframe 环境中重现它,但我会尽力在这里解释这个问题。
在 IE 中,而不是 运行 作为管理员,当我按下按钮 "Empty" 时,它会调用 window.open("", windowname, . ..) 并出现一个新的空白 window 。接下来我按下按钮 "Full" 并调用 window.open("http://www.google.com", windowname, ..) 以及旧的空白 window 设置为 Google.
在IE中,当运行作为管理员时,初始空白window不会被覆盖。相反,空白 window.
旁边会出现一个带有 Google 的新 window
我在下面包含了我的测试代码。我不确定它在 iframe 中的事实是否相关,但我将其包括在内以防万一
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<iframe src="http://127.0.0.1:8888/">
</iframe>
</body>
</html>
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>
尝试另一种方式,不使用 window.open()
有:Alertify JS 一个很好的消息库。
仅包括 js 和 css 文件:
<script src="PATH_TO_FILE/alertify.min.js"></script>
<link rel="stylesheet" href="PATH_TO_FILE/alertify.css" />
<link rel="stylesheet" href="PATH_TO_FILE/alertify.default.css" />
这里有一个例子:
alertify.alert("Message");
有很多方法,例如:提示、确认、日志、成功...
试试吧:)
window.open() 的行为取决于一些因素,尤其是在 Internet Explorer 中。
由于您提供了一个 width/height 参数,浏览器应该以弹出窗口的形式打开您的新 window(如果您的设置允许这样做)- 如果您删除 width/height 浏览器通常会在新标签页中打开。
由于您的 window 名称被重复使用,并且不包含空格或连字符,浏览器应该为两者重复使用相同的 window 实例。 (如果你有空格或连字符,IE 会窒息而不会打开弹出窗口(已知的 IE 错误))。
"TESTWINDOW" 可能足够独特,但也要注意 IE 有一个错误,如果您有另一个站点试图调用 window.open() 并且他们使用相同的 window 名称为 you/your 站点,浏览器将重新使用该弹出窗口 window。 IE 没有正确地 "namespace" 它们到域(已知错误)。
现在有一次(IE7/8?)Microsoft 改变了启动 window 的一些行为,位置为“”(空字符串),and/or "about:blank" ,或 "javascript:;" 或 "javascript:void;" 等,这样它们就不会在与打开它们的域相同的级别上受到信任。您可能遇到与此相关的问题。 (如果您使用 2 个不同但 "real" 的网址,我很好奇行为是否更好)。
由于新弹出窗口 window 是一个命名的 window,如果 iframe 或其父项的名称为 "TESTWINDOW",您也会得到一些奇怪的结果。
最后,您表示根据登录用户的不同,您会得到不同的结果。由于 IE 中的设置是针对每个用户的,因此您很可能会看到不同的设置。例如您的配置文件之一是否在兼容模式列表中包含您的域(或本地主机)?或者您的个人资料是否有不同的弹出窗口阻止规则或隐私设置?
当 运行 Internet Explorer 作为管理员时,我看到调用 window.open() 的不同行为。我无法在 jsfiddle/codepen 等 sanboxed iframe 环境中重现它,但我会尽力在这里解释这个问题。
在 IE 中,而不是 运行 作为管理员,当我按下按钮 "Empty" 时,它会调用 window.open("", windowname, . ..) 并出现一个新的空白 window 。接下来我按下按钮 "Full" 并调用 window.open("http://www.google.com", windowname, ..) 以及旧的空白 window 设置为 Google.
在IE中,当运行作为管理员时,初始空白window不会被覆盖。相反,空白 window.
旁边会出现一个带有 Google 的新 window我在下面包含了我的测试代码。我不确定它在 iframe 中的事实是否相关,但我将其包括在内以防万一
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<iframe src="http://127.0.0.1:8888/">
</iframe>
</body>
</html>
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>
尝试另一种方式,不使用 window.open()
有:Alertify JS 一个很好的消息库。
仅包括 js 和 css 文件:
<script src="PATH_TO_FILE/alertify.min.js"></script>
<link rel="stylesheet" href="PATH_TO_FILE/alertify.css" />
<link rel="stylesheet" href="PATH_TO_FILE/alertify.default.css" />
这里有一个例子:
alertify.alert("Message");
有很多方法,例如:提示、确认、日志、成功...
试试吧:)
window.open() 的行为取决于一些因素,尤其是在 Internet Explorer 中。
由于您提供了一个 width/height 参数,浏览器应该以弹出窗口的形式打开您的新 window(如果您的设置允许这样做)- 如果您删除 width/height 浏览器通常会在新标签页中打开。
由于您的 window 名称被重复使用,并且不包含空格或连字符,浏览器应该为两者重复使用相同的 window 实例。 (如果你有空格或连字符,IE 会窒息而不会打开弹出窗口(已知的 IE 错误))。
"TESTWINDOW" 可能足够独特,但也要注意 IE 有一个错误,如果您有另一个站点试图调用 window.open() 并且他们使用相同的 window 名称为 you/your 站点,浏览器将重新使用该弹出窗口 window。 IE 没有正确地 "namespace" 它们到域(已知错误)。
现在有一次(IE7/8?)Microsoft 改变了启动 window 的一些行为,位置为“”(空字符串),and/or "about:blank" ,或 "javascript:;" 或 "javascript:void;" 等,这样它们就不会在与打开它们的域相同的级别上受到信任。您可能遇到与此相关的问题。 (如果您使用 2 个不同但 "real" 的网址,我很好奇行为是否更好)。
由于新弹出窗口 window 是一个命名的 window,如果 iframe 或其父项的名称为 "TESTWINDOW",您也会得到一些奇怪的结果。
最后,您表示根据登录用户的不同,您会得到不同的结果。由于 IE 中的设置是针对每个用户的,因此您很可能会看到不同的设置。例如您的配置文件之一是否在兼容模式列表中包含您的域(或本地主机)?或者您的个人资料是否有不同的弹出窗口阻止规则或隐私设置?