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

bra*_*ahn 10 javascript google-chrome popup

我想在网页上有一个按钮,其行为如下:

  • 在第一次单击时,打开一个弹出窗口.
  • 在稍后点击时,如果弹出窗口仍然打开,只需将其置于前面即可.如果没有,重新打开.

以下代码适用于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>
Run Code Online (Sandbox Code Playgroud)

背景:我正在专门针对谷歌浏览器重新提出这个问题,因为我认为我的代码至少解决了其他现代浏览器和IE8的问题.如果有这样做的首选礼仪,请告诉我.

Ste*_*ger 8

你不能.出于安全原因,Chrome中禁用了Window.focus,这种情况不太可能发生变化.

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

  • 噢,这令人沮丧.出于好奇,安全问题是什么?我看到了一些关于可能相关推理的讨论[这里](http://code.google.com/p/chromium/issues/detail?id=1383#c8),尽管这似乎更多关于弹出窗口窃取焦点来自父窗口而不是父窗口将焦点放在弹出窗口上(这正是我正在寻找的).谢谢! (3认同)