2014-09-22 31 views
1

如问题...如何从window范围例如触发的事件得到window对象:是否有可能从handleEvent中的事件获取窗口对象?

handleEvent: function(event) { 

    // is window object available here and can we get it from event 
} 

我可以从其他API的window对象。我想知道是否有可能从被解雇的event中得到它。

参考:
handleEvent
Code Snippet using handleEvent

+0

你真的应该提供一些更多的上下文在这个问题上。 – erikvold 2014-09-22 22:34:00

+0

确定可以删除评论。 – Noitidart 2014-09-25 12:59:12

回答

3

我找到了答案......所有这些都会从事件

event.viewevent.view
获取window对象event.target.ownerDocument.defaultViewevent.target
event.originalTarget.ownerGlobalevent.originalTarget(非标)

+0

这就是它! event.view真棒!谢啦!真的很喜欢那个非标准的提示。 – Noitidart 2014-09-22 21:18:50

+0

这不能保证能够正常工作,但几乎可以一直工作。它假定该事件是在GUI/DOM目标(即从浏览器内)触发的。这可能不是'window'对象。 – Makyen 2014-09-22 22:07:03

+0

@Makyen ......也许......但我的意思是形成一个窗口环境...我会澄清我的问题 – erosman 2014-09-23 04:52:01

1

这取决于事件。但通常情况下,你可以。在事件上做一个console.log,然后你可能会像targetChromeWindow之类的东西,这个我不记得我在做某事的时候遇到过它。

最通常不过,让event.target或relatedTarget或originalTarget(那里有一个以上目标我忘了是什么),如果你想在Chrome窗口,从你可以得到做做ownerDocument.defaultView

这样的:

var DOMWin = win.QueryInterface(Ci.nsIInterfaceRequestor) 
.getInterface(Ci.nsIWebNavigation) 
.QueryInterface(Ci.nsIDocShellTreeItem) 
.rootTreeItem 
.QueryInterface(Ci.nsIInterfaceRequestor) 
.getInterface(Ci.nsIDOMWindow); 
+0

谢谢...代码太长..我可以很容易地通过'Services.ww.activeWindow'获得窗口..我想知道是否可以从被触发的事件中获得;) – erosman 2014-09-22 18:31:08

+0

查看event.target和其他人我列出abo​​uve,然后做一个.ownerDocument.defaultView – Noitidart 2014-09-22 19:06:33

1

,如果他们不存在,下面将填充窗口和文档的变量。

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; 
相关问题