我正在开发一个通常在当前页面中完成所有工作的书签,但偶尔需要打开一个新窗口(主要用于登录流程)。我大部分时间都在工作,但是 chrome 正在做一些意想不到的事情。
window.open
在大多数浏览器中,我正在进行的调用会生成一个标准的新窗口/选项卡,但在 chrome 中它会在不同样式的窗口中打开。该窗口没有选项卡和只读 URL 栏。
似乎 chrome 的行为基于打开发生的鼠标单击距离有多远。这是一些演示它的简单代码:
<!DOCTYPE html>
<html>
<head>
<title>Chrome window.open Test</title>
<script>
function startOpen() {
var delay = Number(document.getElementById('delay').value);
setTimeout(openWindow, delay);
}
function openWindow() {
window.open('http://www.google.com', '_blank');
}
</script>
</head>
<body>
<input type="text" id="delay" value="1000"></input>
<input type="button" value="Open" onclick="startOpen()"></input>
</body>
</html>
如果我留下延迟,1000
它会正常打开。但是,如果我做到这一点,3000
它会在另一个样式窗口中打开:
在较慢的连接上,我的小书签的初始化可能需要一秒钟以上(需要加载几个库并进行凭据检查),因此我偶尔会超出此时间范围,从而导致跨浏览器和尝试的行为不一致。
有没有办法告诉 chrome 打开标准窗口,或者这只是我必须忍受的一些强迫行为?