2016-08-05 61 views
0

我有一個頁面爲用戶打開一個word文檔。在頁面後面,當用戶關閉打開的文檔時,「等待對話框」呈現爲關閉。 我做了一些挖掘工作,但沒有找到可行的解決方案。如何檢測瀏覽器選項卡是否集中在頂部?

當然,我檢查了這一個:Is there a way to detect if a browser window is not currently active?,但它只適用於切換標籤或最小化瀏覽器窗口。它沒有檢測到瀏覽器打開了一個帶有文件的窗口,瀏覽器也沒有關注,因爲帶有文件的窗口關閉了。

我在IE11上面測試過解決方案(以及其他我知道的,主要關注焦點事件)。一個複雜因素可能是新窗口從iframe中打開(不要問,我不能改變:(:(),但我使用的是window.top,並且還檢查window.top.document隱藏的值,這一直是假的。

編輯:How to tell if browser/tab is active - 這個問題也沒有解決問題,正如我前面提到的,這可能是因爲這些iframe(我使用window.top附加的事件,但仍然沒有效果):

結構:

    • 的iFrame觸發行動中創建文件
    • iframe中實現創建文件
    • iframe中添加文件來存儲,並打開新的窗口
用於實現該行動

的Java腳本包含在所有的I幀和在頁面中也是如此。我知道這可能是含糊不清的解釋和建議的解決辦法是改變這個Web應用程序的架構......

+2

的可能的複製[如何判斷瀏覽器/標籤被激活(HTTP://計算器.COM /問題/ 1760250 /如何到告知,如果瀏覽器的標籤,是有效) – Endless

回答

1
  var vis = (function(){ 
      var stateKey, 
       eventKey, 
       keys = { 
         hidden: "visibilitychange", 
         webkitHidden: "webkitvisibilitychange", 
         mozHidden: "mozvisibilitychange", 
         msHidden: "msvisibilitychange" 
      }; 
      for (stateKey in keys) { 
       if (stateKey in document) { 
        eventKey = keys[stateKey]; 
        break; 
       } 
      } 
      return function(c) { 
       if (c) document.addEventListener(eventKey, c); 
       return !document[stateKey]; 
      } 
     })(); 


     vis(function(){ 

      if(vis()){ 

       // tween resume() code goes here  
      setTimeout(function(){    
        console.log("tab is visible - has focus"); 
       },300);  

      } else { 

       // tween pause() code goes here 
       console.log("tab is invisible - has blur");  
      } 

     }); 
相關問題