繁体   English   中英

在Google Chrome浏览器中,如何使用父窗口中的javascript将现有的弹出窗口置于最前面?

[英]In Google Chrome, how do I bring an existing popup window to the front using javascript from the parent window?

我希望网页上的按钮具有以下行为:

  • 第一次单击时,打开一个弹出窗口。
  • 稍后单击时,如果弹出窗口仍处于打开状态,则将其置于最前面。 如果没有,请重新打开。

以下代码可在Firefox(Mac和Windows),Safari(Mac和Windows)和IE8中使用。 (我尚未测试IE6或IE7。)但是,在Google Chrome浏览器(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>

背景:我再次问这个问题,专门为谷歌Chrome,因为我觉得我在我的代码至少解决问题的其他现代浏览器和IE8。 如果有这样做的首选礼节,请告诉我。

你不能 出于安全原因,Chrome中的Window.focus已被禁用,并且这种情况不太可能更改。

您必须关闭并重新打开相应的窗口。

为什么不只在window.open调用之后执行popopWindow.focus()? 在那里也这样做不会有什么坏处,它应该确保新窗口显示在当前窗口的顶部。

您需要将原始窗口设置为模糊,将新窗口设置为聚焦。

var popup = {  //popup = object literal representing your popup
    execute = (function () {
        popup.win = window.open();
        popup.win.focus();
    }());
};
window.blur();

在onclick处理程序中调用以下代码对我有用:

var popup = window.open('', 'popup-name', 'resizable,width=480=height=575');

if(popup.location == 'about:blank') {
    popup.location = 'http://google.com';
    return;
}

这段代码通过尝试访问弹出窗口的位置来工作,如果它的about:blank是一个新的弹出窗口并且设置了URL。 否则,如果已经打开了具有相同名称“ popup-name”的窗口,则弹出窗口将成为焦点。 确实需要从onclick处理程序中调用此代码,否则它将无法正常工作。

从今天开始,仅在对弹出窗口的引用上调用focus()即可起作用,并将窗口置于最前面。 我正在使用Chrome版本62

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM