Можно ли получить объект окна из события в handleEvent?
Как и в вопросе... как получить window
объект от события, запущенного в window
сфера например:
handleEvent: function(event) {
// is window object available here and can we get it from event
}
Я могу получить window
объект из других API. Мне было интересно, можно ли было получить его от уволенного event
,
3 ответа
Я узнал ответ... любой из них получит window
объект из события
event.view
event.viewevent.target.ownerDocument.defaultView
event.targetevent.originalTarget.ownerGlobal
event.originalTarget (нестандартный)
Это зависит от события. Но чаще всего да, вы можете. Сделайте console.log для этого события, тогда вы можете создать что-то вроде targetChromeWindow или что-то в этом роде, но я не могу вспомнить, чтобы однажды наткнулся на него, хотя и что-то делал.
Чаще всего, однако, получить event.target или relatedTarget или originalTarget (есть еще одна цель, я забыл, что это такое) и сделать ownerDocument.defaultView
Если вы хотите, чтобы окно Chrome из этого вы могли получить, сделав это:
var DOMWin = win.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIWebNavigation)
.QueryInterface(Ci.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindow);
Следующее заполнит переменные окна и документа, если они еще не существуют. Это должно работать из любой области видимости / контекста:
if (typeof window === "undefined") {
//If there is no window defined, get the most recent.
var window = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator)
.getMostRecentWindow("navigator:browser");
}
if (typeof document === "undefined") {
//If there is no document defined, get it
var document = window.content.document;
}
Вот некоторые дополнительные переменные, которые могут быть полезны в зависимости от того, что вы делаете:
if (typeof gBrowser === "undefined") {
//If there is no gBrowser defined, get it
var gBrowser = window.gBrowser;
}
var tab = gBrowser.selectedTab;
var browserForTab = gBrowser.getBrowserForTab( tab );
var notificationBox = gBrowser.getNotificationBox( browserForTab );
var ownerDocument = gBrowser.ownerDocument;