2009-07-17 3 views
0

Pour les navigateurs FF et autres navigateurs autres que IE, window.opener.outerWidth/Height me donne les informations dont j'ai besoin. Pour IE, je suis toujours à perte, de IE6 à 8. Je ne peux pas utiliser jquery car la page de l'ouvreur est hors de mon contrôle, donc je ne peux pas faire un window.opener. $ (Window). Cela nécessite que l'ouvreur ait jquery 'attaché' (corrigez-moi si je me trompe).Obtention de la taille de la fenêtre de l'ouvre-porte (IE)

J'ai googlé un peu et j'ai également cherché sur ce site, je ne trouve toujours pas de réponse précise. Pour ajouter: J'ai vraiment besoin de la taille externe pour pouvoir faire un redimensionnement à (w, h) pour la fenêtre ouverte où w et h sont calculés en fonction d'un ratio de la taille de l'ouvreur. "resizeTo" définit ironiquement la taille externe pour IE et d'autres navigateurs. J'ai aussi essayé des tas de choses en utilisant resizeBy, pas assez bon.

Répondre

3

outerWidth et outerHeight définir les dimensions de la fenêtre du navigateur (y compris la barre latérale, la fenêtre chrome et la fenêtre [redimensionnement des bordures/poignées]. Malheureusement, vous ne pouvez pas obtenir ces dimensions dans IE - seules les dimensions de la fenêtre d'affichage sont disponibles (assez bon pour la plupart des applications que j'ai vues). Aka window.innerWidth/window.innerHeight. JQuery peut vous donner les dimensions de la fenêtre actuelle, mais pas d'autres fenêtres (par exemple, ouvreurs, enfants, etc.). Vous devrez donc le coder vous-même. Voici un échantillon brut:

// 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 } 
} 

Essayez-le aiment:

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

Notez également que vous ne pouvez pas lire une de ces valeurs si la fenêtre donnée a chargé un document à partir d'un autre domaine (mesure de sécurité).

+0

@crescentfresh Merci pour la réponse. J'ai essayé d'utiliser la méthode que vous avez mentionnée avant de poster cette question. Le problème est, j'ai vraiment besoin de la taille externe pour que je puisse faire un resizeTo (w, h) pour la fenêtre ouverte où w et h sont calculés en fonction d'un ratio ou de la taille de l'ouvreur. "resizeTo" définit ironiquement la taille externe pour IE et d'autres navigateurs. J'ai aussi essayé des tas de choses en utilisant resizeBy, pas assez bon. De toute façon +1 pour vos entrées :) –

+0

@okw: si votre objectif final est d'appeler 'resizeTo()', vous pouvez faire l'affaire ici: http://www.faqts.com/knowledge_base/view.phtml/aid/ 1178 Tout ce qu'il fait est de lancer un appel de taille fixe jetable à 'resizeTo (500, 500)', soustraire les rapports IE de valeurs, et d'utiliser ceux dans l'appel * real * 'resizeTo' plus tard. –

+0

@crescentfresh Mon objectif final est de redimensionner la nouvelle fenêtre à un ratio fixe de l'ouvreur. Donc resizeTo est le plus simple. ResizeBy était un détour que j'ai essayé. Votre suggestion fonctionnera si peu orthodoxe, oui? Quoi qu'il en soit, appréciez-le et si aucune meilleure solution ne se présente, je pourrais le faire. :-) –

Questions connexes