如问题...如何window
从范围内触发的事件中获取对象window
,例如:
handleEvent: function(event) {
// is window object available here and can we get it from event
}
我可以window
从其他 API 获取对象。我想知道是否有可能从被解雇的人那里得到它event
。
参考:使用handleEvent的
handleEvent
代码片段
如问题...如何window
从范围内触发的事件中获取对象window
,例如:
handleEvent: function(event) {
// is window object available here and can we get it from event
}
我可以window
从其他 API 获取对象。我想知道是否有可能从被解雇的人那里得到它event
。
参考:使用handleEvent的
handleEvent
代码片段
我找到了答案......其中任何一个都会window
从事件中获取对象
event.view
event.view
event.target.ownerDocument.defaultView
event.target
event.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;