我想在网页上有一个按钮,其行为如下:
以下代码适用于Firefox(Mac和Windows),Safari(Mac和Windows)以及IE8。 (我还没有测试IE6或IE7。)但是,在谷歌浏览器(Mac和Windows)中,稍后点击无法将现有弹出窗口置于最前面。
如何在Chrome中完成此工作?
<head>
<script type="text/javascript">
var popupWindow = null;
var doPopup = function () {
if (popupWindow && !popupWindow.closed) {
popupWindow.focus();
} else {
popupWindow = window.open("http://google.com", "_blank",
"width=200,height=200");
}
};
</script>
</head>
<body>
<button onclick="doPopup(); return false">
create a pop-up
</button>
</body>
背景:我正在重新询问this question专门针对谷歌浏览器,因为我认为我的代码至少解决了其他现代浏览器和IE8的问题。如果有这样做的首选礼仪,请告诉我。
答案 0 :(得分:8)
你做不到。出于安全原因,Chrome中禁用了Window.focus,这种情况不太可能发生变化。
您必须关闭并重新打开相应的窗口。
答案 1 :(得分:0)
为什么不在window.open调用之后执行popopWindow.focus()?在那里做它也不会有什么坏处,它应该确保你的新窗口显示在当前的窗口之上。
答案 2 :(得分:0)
您需要将原始窗口设置为模糊,并将新窗口设置为焦点。
var popup = { //popup = object literal representing your popup
execute = (function () {
popup.win = window.open();
popup.win.focus();
}());
};
window.blur();
答案 3 :(得分:0)
以下代码在onclick处理程序中调用时适用于我:
var popup = window.open('', 'popup-name', 'resizable,width=480=height=575');
if(popup.location == 'about:blank') {
popup.location = 'http://google.com';
return;
}
此代码的工作原理是尝试访问弹出窗口的位置,如果其位于:空白其新弹出窗口并设置了网址。否则如果窗口名称相同&#39; popup-name&#39;已经打开弹出窗口成为焦点。这个代码确实需要从onclick处理程序调用,否则它将无法工作。
答案 4 :(得分:0)
从今天开始,仅在对弹出窗口的引用上调用focus()即可起作用,并将窗口置于最前面。我正在使用Chrome版本62