Jak mohu získat objekt Window z objektu dokumentu?

hlasů
46

Můžu window.document ale jak mohu získat document.window? Musím vědět, jak na to ve všech prohlížečích.

Položena 27/08/2009 v 01:06
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
79

Můžete jít s document.defaultViewPokud jste si jisti jeho okno a její pořádku přeskočit prohlížeče Microsoft Internet Explorer před 9.

Odpovězeno 27/08/2009 v 02:50
zdroj uživatelem

hlasů
17

Kříž řešení prohlížeč je složité, tady je návod, jak to dělá dojo (od 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 use
if(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

má ( „ie“) vrátí platí pro IE (a falešné jinak)

Odpovězeno 21/04/2012 v 17:08
zdroj uživatelem

hlasů
3

No, to je řešení, které jsem šel s. Funguje to, ale nesnáším to.

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;
}   
Odpovězeno 28/08/2009 v 18:44
zdroj uživatelem

hlasů
0

Jsem se rozhodla pro vstřikování DOCUMENTtokenu od @angular/platform-browser:

import { DOCUMENT } from '@angular/platform-browser'

a pak přistupovat k rodiče:

constructor(@Inject(DOCUMENT) private document: any) {
}

public ngOnInit() {
  // this.document.defaultView || this.document.parentWindow;
}
Odpovězeno 25/04/2018 v 13:14
zdroj uživatelem

hlasů
0

První off pojďme být jasné. něco takového je často nutné při práci s rámy, iframe a více oken, a tak „okno je právě globální objekt“ je neuspokojivá odpověď, pokud vše máte kliku je dokument z jiného okna , než je jedna se nacházíte.

Druhým, bohužel neexistuje žádný přímý způsob, jak se dostat do objektu okna. existují nepřímé způsoby.

primární mechanismus k použití je window.name. Při vytváření okna nebo rámu z nějaké nadřazené okno, můžete obvykle dát mu jedinečný název. skriptů uvnitř tohoto okna lze získat na window.name. skriptů za oknem může dostat na window.name všech svých podřízených oken.

dostat konkrétnější, než který vyžaduje více informací o konkrétní situaci. nicméně v každé situaci, kdy mohou dítě skripty komunikovat s mateřskými skripty nebo naopak, mohou vždy poznat sebe podle jména, a to je obvykle dost.

Odpovězeno 06/06/2013 v 02:18
zdroj uživatelem

hlasů
-2

Objekt Okno je nejvyšší úroveň objekt v hierarchii JavaScript , tak jen se odkazují na to jako okna

Edit: Původní odpověď před podporovat JS úsilí. JavaScript technologie přehled na Mozilla Developer Network říká:

V prostředí prohlížeče, tato globální objekt je objekt okno.

Edit 2: Po přečtení autorovu poznámku na jeho otázku (a stále downvotes), zdá se být ve vztahu k oknu dokumentu IFRAME je. Podívejte se na window.parent a window.top a možná porovnávat je odvodit okna dokumentu.

if (window.parent != window.top) {
  // we're deeper than one down
}
Odpovězeno 27/08/2009 v 01:25
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more