2009-07-17 12 views
0

Für FF und andere Nicht-IE-Browser, window.opener.outerWidth/Height geben Sie mir die Informationen, die ich brauche. Für den IE bin ich immer noch ratlos, von IE6 bis 8. Ich kann jQuery nicht verwenden, da die Seite des Openers nicht in meiner Kontrolle liegt, also kann ich keinen window.opener. $ (Window) machen. Dies erfordert, dass der Öffner jquery 'angehängt' hat (korrigiere mich, wenn ich falsch liege).Abrufen der Fenstergröße des Öffnerfensters (IE)

Ich googelte ein wenig und auch diese Website durchsucht, kann immer noch nicht eine klare Antwort finden.

Hinzufügen: Ich brauche wirklich die äußere Größe, so dass ich eine resizeTo (w, h) für das geöffnete Fenster tun kann, wo w und h basierend auf einem Verhältnis der Größe des Öffners berechnet werden. "resizeTo" legt ironisch die äußere Größe für IE und andere Browser fest. Ich habe auch eine Unmenge von Sachen mit resizeBy versucht, nicht gut genug.

Antwort

3

outerWidth und outerHeight definieren Sie die Abmessungen des Browserfensters (einschließlich Sidebar, Fenster und Größenanpassungen). Leider können Sie diese Dimensionen im IE nicht finden - es sind nur die Abmessungen des Fenster-Viewports verfügbar (gut genug für die meisten Anwendungen, die ich gesehen habe). Auch bekannt als window.innerWidth/window.innerHeight.

jQuery kann Ihnen die Abmessungen des aktuellen Fenster-Ansichtsfensters geben, aber nicht andere Fenster (z. B. Öffner, Kinder usw.). Sie müssen das also selbst programmieren. Hier ist ein grobes Beispiel:

// get viewport size (without scrolling) of the given window object 
function clientSize(win) { 
    var width, height; 

    if(win.innerWidth || win.innerHeight) { 
     width = win.innerWidth; 
     height = win.innerHeight; 
    } else { 
     var doc = win.document; 
     width = doc.documentElement.clientWidth || doc.body.clientWidth; 
     height = doc.documentElement.clientHeight || doc.body.clientHeight; 
    } 

    return { width:width, height:height } 
} 

Versuchen Sie es mag:

var openerSize = clientSize(window.opener); 
// now use openerSize.width, openerSize.height 

Beachten Sie auch, dass Sie keine dieser Werte lesen können, wenn das angegebene Fenster ein Dokument aus einer anderen Domäne (Sicherheitsmaßnahme geladen ist).

+0

@crescentfresh Danke für die Antwort. Ich habe tatsächlich versucht, die Methode zu verwenden, die du erwähnt hast, bevor ich diese Frage gepostet habe. Das Problem ist, ich brauche wirklich die äußere Größe, so dass ich eine resizeTo (w, h) für das geöffnete Fenster tun kann, wo w und h basierend auf einem Verhältnis oder der Größe des Öffners berechnet werden. "resizeTo" legt ironisch die äußere Größe für IE und andere Browser fest. Ich habe auch eine Unmenge von Sachen mit resizeBy versucht, nicht gut genug. Anyway +1 für Ihre Eingaben :) –

+0

@okw: Wenn Ihr Endziel ist, 'resizeTo()' aufzurufen, können Sie den Trick hier tun: http://www.faqts.com/knowledge_base/view.phtml/aid/ 1178 Alles, was es tut, ist einen Wegwerfbefehl in festgelegter Größe an 'resizeTo (500, 500)' auszugeben, die Werte IE-Berichte zu subtrahieren und diese im * real * 'resizeTo'-Aufruf später zu verwenden. –

+0

@crescentfresh Mein Endziel ist es, das neue Fenster auf ein festes Verhältnis des Öffners zu skalieren. ResizeTo ist also am einfachsten. ResizeBy war ein Abstecher, den ich ausprobiert habe. Dein Vorschlag wird zwar irgendwie unorthodox funktionieren, oder? Wie auch immer, schätze es und wenn es keine bessere Lösung gibt, könnte ich das einfach tun. :-) –

Verwandte Themen