簡體   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