How do I get the Window object from the Document object? How do I get the Window object from the Document object? javascript javascript

How do I get the Window object from the Document object?


You can go with document.defaultView if you’re sure its a window and its okay to skip Microsoft browsers before IE 9.


A cross browser solution is complicated, here's how dojo does it (from window.js::get()):

// In some IE versions (at least 6.0), document.parentWindow does not return a// reference to the real window object (maybe a copy), so we must fix it as well// We use IE specific execScript to attach the real window reference to// document._parentWindow for later useif(has("ie") && window !== document.parentWindow){    /*    In IE 6, only the variable "window" can be used to connect events (others    may be only copies).    */    doc.parentWindow.execScript("document._parentWindow = window;", "Javascript");    //to prevent memory leak, unset it after use    //another possibility is to add an onUnload handler which seems overkill to me (liucougar)    var win = doc._parentWindow;    doc._parentWindow = null;    return win; //  Window}return doc.parentWindow || doc.defaultView; //  Window

has("ie") returns true for IE (and false otherwise)


Well, this is the solution I went with. It works, but I hate it.

getScope : function(element) {    var iframes = top.$$('iframe');    var iframe = iframes.find(function(element, i) {        return top[i.id] ? top[i.id].document == element.ownerDocument : false;    }.bind(this, element));    return iframe ? top[iframe.id] : top;}