![](/img/trans.png)
[英]Javascript window.open() on Internet Explorer 11 when open intranet website not work correctly
[英]Different window.open(…) behaviour when running Internet Explorer 11 as Administrator
以管理員身份運行Internet Explorer時,我對window.open()的調用看到了不同的行為。 我無法在jsfiddle / codepen等經過包裝的iframe環境中重現它,但我會盡力在此解釋問題。
在IE(不是以管理員身份運行)中,當我按下按鈕“ Empty”時,它將調用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>
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()的行為取決於幾件事,尤其是在Internet Explorer中。
由於您提供的是寬度/高度參數,因此瀏覽器應將您的新窗口作為彈出窗口打開(如果您已設置允許該設置)-如果刪除了寬度/高度,瀏覽器通常會在新選項卡中打開。
由於您的窗口名已被重新使用,並且不包含空格或連字符,因此瀏覽器應為兩者重新使用相同的窗口實例。 (如果您有空格或連字符,IE將會阻塞並且無法打開彈出窗口(已知的IE錯誤))。
“ TESTWINDOW”可能對此具有足夠的唯一性,但也請注意IE瀏覽器存在一個錯誤:如果您有另一個試圖調用window.open()的站點,並且它們使用與您/您的站點相同的窗口名稱,瀏覽器將重新使用該彈出窗口。 IE不能正確地將它們命名為域(已知錯誤)。
現在,在某一時刻(IE7 / 8?),Microsoft更改了一些有關啟動位置為“”(空字符串)和/或“ about:blank”或“ javascript :;”的窗口的行為。 或“ javascript:void;” 等等,以使它們在與打開它們的域相同的級別上不受信任。 您可能遇到與此有關的問題。 (如果您使用2個不同的但“真實”的URL,我會很好奇行為是否很好奇)。
由於新的彈出窗口是一個命名窗口,因此如果iframe或其父級的名稱為“ TESTWINDOW”,您也會得到一些奇怪的結果。
最后,您指出根據登錄的用戶會得到不同的結果。 由於IE中的設置是針對每個用戶的,因此您很可能會看到不同的設置在起作用。 例如,您的個人資料之一在兼容模式列表中是否具有您的域(或本地主機)? 還是您的個人資料之一具有不同的彈出窗口阻止規則或隱私設置?
嘗試另一種方法,使用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");
有很多方法,例如:提示,確認,登錄,成功,...
試試吧 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.