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 中的设置是针对每个用户的,因此您很可能会看到不同的设置。例如您的配置文件之一是否在兼容模式列表中包含您的域(或本地主机)?或者您的个人资料是否有不同的弹出窗口阻止规则或隐私设置?