2017-01-19 81 views
1

我正在調查和閱讀有關的信息,無法找到應該如何完成的任何地方。如何從chrome擴展中的opener獲取close事件?

我開發一個Chrome擴展以供參考文檔here

所以我想創建一個彈出窗口,然後當它關閉,如下面的代碼片段聽(不工作)。

chrome.windows.create({ 
    url: "http://www.google.com", 
    type: "popup", 
    width: 640, 
    height: 800 
}, function(w) { 
    w.onunload = function() { 
     console.log("hey"); 
    }; 
}); 

任何有關如何完成它的最佳方式的建議?

+2

見chrome.windows API文檔:window參數不是DOM窗口。 – wOxxOm

+0

這是正確的。 – locropulenton

回答

1

訂閱chrome.windows.onRemoved事件將工作,但我找不到任何更好的方式來確定彈出窗口標識,但封閉的範圍。

chrome.windows.getCurrent(function() { 
    chrome.windows.create({ 
     url: "http://www.google.com", 
     type: "popup", 
     width: 640, 
     height: 800 
    }, function(w) { 
     chrome.windows.onRemoved.addListener(function (wIndex) { 
      if (wIndex === w.id) { 
       console.log("hey"); 
      } 
     }); 
    }); 
}); 
+2

鑑於您只能將窗口關閉一次,因此您應在檢測到窗口關閉時移除偵聽器。 – Makyen

1

您可以使用一個變量來跟蹤彈出窗口的ID,並檢查該變量在chrome.windows.onRemoved監聽器,這樣你就不必添加和刪除每次聽衆:

var myPopupId; 

chrome.windows.create({ 
    url: "http://www.google.com", 
    type: "popup", 
    width: 640, 
    height: 800 
    }, function(w) { 
     myPopupId = w.id; 
    } 
); 

chrome.windows.onRemoved.addListener(function(windowId){ 
    if (windowId == myPopupId){ 
     console.log("hey"); 
    } 
}); 
相關問題