2016-06-08 197 views
0

此問題只發生在Edge中,但適用於IE11和Chrome。有沒有辦法解決這個問題?彈出窗口在Edge瀏覽器中彈出多個彈出窗口時關閉問題

  1. 主窗口打開第一個孩子的窗口(使用Javascript window.open當最終用戶單擊主窗口中的鏈接)
  2. 然後,當最終用戶點擊了第一個孩子窗口中的按鈕,JS就會關閉此1子窗口。
  3. 然後JS碼具有在主窗口經由JS代碼打開一個第二子窗口(1st_child_window.opener.open
  4. 如果最終用戶嘗試關閉該第二子窗口(或者一個按鈕調用JS window.close或瀏覽器的設置─「X」 - 按鈕)它間歇性地工作。很多時候它不能被關閉並保持爲空白彈出窗口。然後它只能被「任務管理器」殺死
  5. 如果步驟#2被註釋掉了(也就是說,打開第一個子窗口),步驟#4可以正常工作(即第二個子窗口可以正常關閉)

代碼爲步驟#2和步驟#3

function showSecondChildScreen(url, FirstChildWindow) { 
.... 
    var mainWindow = FirstChildWindow.opener; 
    FirstChildWindow.close(); 
    var SecondChildScreen = mainWindow.open(url,'passWin','width=700,top=120,left=200,titlebar=yes,resizable=yes,scrollbars=yes'); 
.... 
} 

編輯:代碼用於一個小例子重現

1. html頁面的主窗口

<!DOCTYPE html> 
<html> 
<head> 
    <title> 
     Popup Window Test 
    </title> 

    <script type="text/javascript"> 
     function showFirstChildWindow() { 
      var pidWin = window.open("firstChild.html",'firstChild','width=600,height=475,screenX=200,screenY=300,top=220,left=200,titlebar=yes,resizable=yes'); 
      if (pidWin != null) { 
       pidWin.focus(); 
      } 
     } 
    </script> 

</head> 

<body> 

<p> 
    <b>Main Window </b> 
</p> 

<a href="javascript:void(0)" onclick="showFirstChildWindow();" > Nurse Patti </a> 
</body> 
</html> 
  • 對於第一子窗口

    <!DOCTYPE html> 
    <html> 
    <head> 
    <title> 
        First child 
    </title> 
    
    <script type="text/javascript"> 
    function showSecondChildScreen(url, FirstChildWindow) { 
    
        var mainWindow = FirstChildWindow.opener; 
        FirstChildWindow.close(); 
        var SecondChildScreen = mainWindow.open(url,'passWin','width=700,top=120,left=200,titlebar=yes,resizable=yes,scrollbars=yes'); 
    
        if (SecondChildScreen != null) { 
         SecondChildScreen.focus(); 
        } 
    
    } 
    </script> 
    
    </head> 
    
    <body> 
    <p> 
    <b>First Child Popup Window </b> 
    </p> 
    

  • html頁面的第二子窗口的HTML頁

    <!DOCTYPE html> 
    <html> 
    <head> 
    <title> 
        Second child 
    </title> 
    
    <script type="text/javascript"> 
    function doClose() {  
        window.close(); 
    } 
    </script> 
    
    </head> 
    <body> 
    <p> 
    <b>Second Child Popup Window </b> 
    </p> 
    
    <input type="button" value="Close" onclick="doClose();" /> 
    
    </body>  
    </html> 
    
  • 步驟來重現(我也關閉在邊緣的「彈出窗口阻止程序」,以使測試更加簡單):

    1. 請把以上3 HTML的文件夾

    2. 下第一個html頁面是主窗口。請邊瀏覽器

    3. 點擊「護士帕蒂」打開它會彈出第一個孩子的彈出窗口

    4. 最終用戶點擊「第二個孩子」按鈕,在第一個孩子的彈出窗口。然後第一個彈出窗口關閉。第二個子彈出窗口打開

    5. 在第二個彈出窗口中單擊「關閉」按鈕或瀏覽器提供的X按鈕。它可能會或可能不會正常關閉。有時候這個第二個孩子變成空白的,只有「任務管理器」可以殺死它。

    +0

    我想你可能需要問微軟 - Edge似乎仍然包含一些奇怪的異常,事實上,甚至有時甚至不工作。 –

    +0

    謝謝。是的,我也在microsoft msdn上發佈了這個問題。希望他們會回來。再次感謝! – riceball

    +0

    好 - 我在一年前有類似的問題 - 在現有窗口後面打開窗戶。我認爲他們已經排序了這些問題,但也許不是 - 它仍然是一個非常新的瀏覽器... –

    回答

    0

    我們結束了一個不同的方法 - 即將這些物理彈出窗口重寫爲jQuery彈出窗口。感謝所有在這裏幫助過的人。