2017-01-19 6 views
1

Я изучал и читал об этом и не мог найти нигде, как это должно быть сделано.Как получить близкое событие от новичка в расширении хром?

Я разрабатываю продление хром принимая для ознакомления документацию 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

Вы можете использовать переменную для отслеживания всплывающего окна идентификатор и проверить эту переменную в 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"); 
    } 
});