--- title: window.open slug: Web/API/Window/open tags: - DOM - DOM_0 translation_of: Web/API/Window/open ---
{{ ApiRef() }}
Crée une nouvelle fenêtre de navigation secondaire et y charge la ressource référencée.
var windowObjectReference = window.open(strUrl, strWindowName[, strWindowFeatures]);
WindowObjectReference
open()
; elle sera à null
si pour une raison ou une autre l'appel n'a pas réussi à ouvrir une fenêtre. Une variable globale est le meilleur endroit pour stocker une telle référence. Il est alors possible, par exemple, de l'utiliser pour obtenir certaines propriétés de la nouvelle fenêtre, ou accéder à certaines de ses méthodes, à condition que la relation entre votre fenêtre principale et votre fenêtre secondaire se conforme avec les paramètres de sécurité de même origine (Same origin policy security requirements ).strUrl
strWindowName
target
d'un élément <a>
ou d'un élément <form>
est spécifié. Cette chaîne ne peut contenir d'espaces. strWindowName ne spécifie pas le titre de la fenêtre, juste son nom interne.strWindowFeatures
La méthode open()
crée une nouvelle fenêtre secondaire de navigation, de façon similaire au choix de l'option Nouvelle fenêtre du menu Fichier. Le paramètre strUrl spécifie l'URL à récupérer et à charger dans la nouvelle fenêtre. Si strUrl est une chaîne vide, une nouvelle fenêtre vide de tout contenu (l'URL about:blank
sera chargée) est créée avec les barres d'outils par défaut de la fenêtre principale.
Notez que les URL distantes ne seront pas chargées instantanément. Lorsque l'appel à window.open()
se termine et renvoie sa valeur, la fenêtre contient toujours about:blank
. Le chargement proprement dit de l'URL est reporté et ne commence effectivement qu'après la fin de l'exécution du bloc de script courant. La création de la fenêtre d'une part et le chargement de la ressource référencée d'autre part sont faits de manière asynchrone.
var windowObjectReference;
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes";
function openRequestedPopup() {
windowObjectReference = window.open("http://www.cnn.com/", "CNN_WindowName", strWindowFeatures);
}
var windowObjectReference;
function openRequestedPopup() {
windowObjectReference = window.open(
"http://www.domainname.ext/path/ImageFile.png",
"DescriptiveWindowName",
"resizable,scrollbars,status"
);
}
Si une fenêtre du nom strWindowName existe déjà, alors, au lieu d'ouvrir une nouvelle fenêtre, strUrl est chargée dans cette fenêtre existante. Dans ce cas, la valeur renvoyée par la méthode est la fenêtre existante, et strWindowFeatures est ignorée. Fournir une chaîne vide pour strUrl est une manière d'obtenir une référence à une fenêtre ouverte par son nom sans en changer l'adresse. Si vous désirez ouvrir une nouvelle fenêtre à chaque appel de window.open()
, il faut utiliser la nom réservé _blank pour strWindowName.
Note à propos de l'utilisation de window.open pour ré-ouvrir ou donner le focus à une fenêtre existante portant un nom connu du domaine : Cette fonctionalité n'est pas valide pour tous les navigateurs et qui plus est avec des comportement variables. Firefox (50.0.1) fonctionne comme il est décrit ici : depuis le même domaine+port la ré-exécution de window.open avec le même nom va accéder à la fenêtre précédemment ouverte. Google Chrome (55.0.2883.87 m ) pour sa part ne l'exécutera qu'à partir du même parent (nommé "opener", comme si les fenêtres étaient créées avec une dépendance et uniquement avec window.open). Il s'agit là d'une limitation considérable ce qui génère une incroyable complexité de développement parfois sans issue. Firefox récupère le handle vers toutes les fenêtres du domaine dont le nom est connu, ce qui permet d'accéder à leur données, mais il ne peut exécuter une commande HTMLElement.focus() vers l'une quelconque de ces fenêtres, ce qui interdit de réouvrir la fenêtre pourtant connue comme active. Pour sa part Chrome peut redonner le focus à une fenêtre (onglet) enfant mais l'opération est impossible entre frères et depuis l'enfant vers le parent. Quant aux autres fenêtres du même domaine (même famille ?) non ouvertes avec window.open elles sont inconnues et window.open('',<name>,'')
ouvrira alors des doublons. La fonction hw=window.open('',strWindowName ,'')
est pourtant la seule qui permette de récupérer un handle en connaissant un nom et théoriquement éviter la création de doublons, mais pour l'instant, 22/02/2017, les différences de comportement des navigateurs ne permettent de l'utiliser que de manière partielle dans des cas très restreints.
strWindowFeatures est une chaîne optionnelle contenant une liste, séparée par des virgules, de fonctionnalités demandées pour la nouvelle fenêtre. Après qu'une fenêtre soit ouverte, vous ne pouvez pas utiliser JavaScript pour changer ses fonctionnalités et ses barres d'outils. Si strWindowName ne spécifie pas une fenêtre existante et si vous ne fournissez pas le paramètre strWindowFeatures (ou si celui-ci est une chaîne vide), la nouvelle fenêtre secondaire comportera les barres d'outils par défaut de la fenêtre principale.
Si le paramètre strWindowFeatures est utilisé et si aucune information de taille n'est définie, les dimensions de la nouvelle fenêtre seront les mêmes que celles de la fenêtre ouverte la plus récemment.
Si le paramètre strWindowFeatures est utilisé et qu'aucune information de position n'est définie, les coordonnées du coin en haut à gauche de la nouvelle fenêtre seront décalées de 22 pixels vers le bas et vers la droite par rapport à celles de la fenêtre ouverte le plus récemment. Un décalage est utilisé par tous les concepteurs de navigateurs (il est de 29 pixels dans Internet Explorer 6 SP2 avec le thème par défaut) et son but est d'aider l'utilisateur à remarquer l'ouverture d'une nouvelle fenêtre. Si la fenêtre ouverte le plus récemment était maximisée, il n'y aura pas de décalage et la nouvelle fenêtre secondaire sera maximisée également.
Si le paramètre strWindowFeatures est défini, les fonctionnalités qui ne sont pas listées, explicitement demandées dans la chaîne, seront désactivées ou enlevées (à l'exception de titlebar et close qui sont par défaut à yes).
Astuce : Si vous utilisez le paramètre strWindowFeatures, listez uniquement les fonctionnalités dont vous avez besoin, qui doivent être activées ou affichées. Les autres (à l'exception de titlebar et close) seront désactivées ou enlevées.
Note sur les corrections d'erreurs de position et de dimension
innerHeight
comprend la hauteur de la barre de défilement horizontale si celle-ci est présente. La valeur minimale requise est 100.innerWidth
comprend la largeur de la barre de défilement verticale si celle-ci est présente. Elle ne prend pas en compte un éventuel panneau latéral si celui-ci est déplié. La valeur minimale requise est 100.dom.disable_window_open_feature.menubar
à true dans about:config ou dans leur fichier user.js.dom.disable_window_open_feature.toolbar
à true dans about:config ou dans leur fichier user.js.dom.disable_window_open_feature.location
à true dans about:config ou dans leur fichier user.js.dom.disable_window_open_feature.directories
à true dans about:config ou dans leur fichier user.js.Astuce : pour des raisons d'accessibilité, il est vivement recommandé de toujours définir cette fonctionnalité à yes.
dom.disable_window_open_feature.resizable
à true dans about:config ou dans leur fichier user.js.Astuce : pour des raisons d'accessibilité, il est vivement recommandé de toujours définir cette fonctionnalité à yes.
dom.disable_window_open_feature.scrollbars
à true dans about:config ou dans leur fichier user.js.showModelessDialog()
.UniversalBrowserWrite
({{ Bug(180048) }}). Sans ce privilège, elle est équivalente à dependent
.showModalDialog()
.dialog
retire toutes les icônes (restaurer, réduire, agrandir) de la barre de titre de la fenêtre, laissant uniquement le bouton de fermeture. Mozilla 1.2+ et Netscape 7.1 afficheront les autres commandes du menu système (dans Firefox 1.0 et Netscape 7.0x, le menu de commandes système n'est pas associé avec l'icône de Firefox/Netscape 7.0x à l'extrémité gauche de la barre de titre, il s'agit probablement d'un bug. Il est possible d'accéder au menu de commandes système avec un clic droit sur la barre de titre). Les fenêtres de dialogue sont des fenêtres qui n'ont pas d'icône de commande système de réduction ni d'agrandissement/restauration dans la barre de titre, ni dans les choix correspondants du menu de commandes système. On les appelle dialogues car leur utilisation normale est uniquement de notifier une information et d'être ensuite immédiatement fermées. Sur les systèmes Mac, les fenêtres de dialogue ont une bordure différente et peuvent prendre la forme desheets .dialog=yes
. Si minimizable
est défini à yes, le nouveau dialogue aura une commande système de réduction dans la barre de titre et il sera possible de le réduire dans la barre des tâches. Toute fenêtre n'étant pas un dialogue est toujours réductible, cette option y sera donc ignorée.fullscreen
ennuie toujours les utilisateurs disposant d'un grand écran ou de plusieurs écrans. Obliger les autres utilisateurs à passer en plein écran avec fullscreen
est également extrêmement impopulaire et est considéré comme une tentative impolie d'imposer les préférences d'affichage de l'auteur à l'utilisateur.fullscreen
ne fonctionne plus vraiment dans Internet Explorer 6 SP2.Les fonctionnalités suivantes nécessitent le privilège UniversalBrowserWrite
, autrement elles seront ignorées. Les scripts chrome bénéficient de ce privilège automatiquement, les autres doivent le demander via le PrivilegeManager.
UniversalBrowserWrite
({{ Bug(244965) }}). Sans ce privilège, elle est ignorée.dom.disable_window_open_feature.titlebar
à true dans about:config ou dans leur fichier user.js.alwaysLowered
.dialog
activée). close=no
a précédence sur minimizable=yes
.dom.disable_window_open_feature.close
à true dans about:config ou dans leur fichier user.js.Les fonctionnalités de position et de taille nécessitent d'être accompagnées d'un nombre. Les fonctionnalités de barres d'outils et de fenêtre peuvent être accompagnées de yes (oui) ou no (non) ; il est également possible d'utiliser 1 à la place de yes et 0 à la place de no. Les fonctionnalités de barres d'outils et de fenêtre acceptent aussi une forme raccourcie : vous pouvez activer une fonctionnalité en listant simplement son nom dans la chaîne strWindowFeatures. Si vous fournissez le paramètre strWindowFeatures, les fonctionnalités titlebar
et close
sont toujours à yes par défaut, mais les autres fonctionnalités présentant un choix yes/no seront à no par défaut et seront donc désactivées.
Exemple :
<script type="text/javascript"> var WindowObjectReference; // variable globale function openRequestedPopup() { WindowObjectReference = window.open("http://www.nomdedomaine.ext/chemin/FichierImg.png", "NomDeFenetreDescriptif", "width=420,height=230,resizable,scrollbars=yes,status=1"); } </script>
Dans cet exemple, la fenêtre sera redimensionnable, elle affichera des barres de défilement si nécessaire (si le contenu dépasse les dimensions de fenêtre demandées) et affichera la barre d'état. Elle n'affichera pas la barre de menus ni la barre d'adresse. Comme l'auteur connaissait la taille de l'image (400 pixels de large et 200 pixels de haut), il a ajouté les marges appliquées à l'élément racine dans Internet Explorer 6, c'est-à-dire 15 pixels en haut, 15 pixels en bas, 10 pixels à gauche et 10 pixels à droite.
<script type="text/javascript"> var WindowObjectReference = null; // variable globale function openFFPromotionPopup() { if (WindowObjectReference == null || WindowObjectReference.closed) { /* si le pointeur vers l'objet window n'existe pas, ou s'il existe mais que la fenêtre a été fermée */ WindowObjectReference = window.open("http://www.spreadfirefox.com/", "PromoteFirefoxWindowName", "resizable=yes,scrollbars=yes,status=yes"); /* alors, création du pointeur. La nouvelle fenêtre sera créée par dessus toute autre fenêtre existante. */ } else { WindowObjectReference.focus(); /* sinon, la référence à la fenêtre existe et la fenêtre n'a pas été fermée: la fenêtre est peut-être minimisée ou derrière la fenêtre principale. Par conséquent, on peut l'amener par dessus les autres à l'aide de la méthode focus(). Il n'est pas nécessaire de recréer la fenêtre ou de recharger la ressource référencée. */ }; } </script> (...) <p><a href="http://www.spreadfirefox.com/" target="PromoteFirefoxWindowName" onclick="openFFPromotionPopup(); return false;" title="Ce lien créera une nouvelle fenêtre ou en réutilisera une déjà ouverte">Promouvoir l'adoption de Firefox</a></p>
Le code ci-dessus résout un certain nombre de problèmes d'utilisabilité (usability ) relatif aux liens ouvrant des fenêtres secondaires. Le but du return false
dans le code est d'annuler l'action par défaut du lien : si le gestionnaire d'évènements onclick est exécuté, il n'est pas nécessaire d'exécuter l'action par défaut du lien. Mais si JavaScript est désactivé ou non existant dans le navigateur de l'utilisateur, c'est l'évènement onclick qui est ignoré et le navigateur charge la ressource référencée dans le cadre ou la fenêtre portant le nom « PromoteFirefoxWindowName ». Si aucun cadre ni fenêtre ne porte ce nom, le navigateur créera une nouvelle fenêtre et l'appellera « PromoteFirefoxWindowName ».
Plus d'informations sur l'utilisation de l'attribut target :
HTML 4.01, section 16.3.2 La sémantique de cible
Comment créer un lien qui ouvre une nouvelle fenêtre?
Vous pouvez également paramétriser la fonction pour la rendre polyvalente, fonctionnelle dans plus de situations, et donc réutilisable dans d'autres scripts et pages Web :
<script type="text/javascript"> var WindowObjectReference = null; // variable globale function openRequestedPopup(strUrl, strWindowName) { if(WindowObjectReference == null || WindowObjectReference.closed) { WindowObjectReference = window.open(strUrl, strWindowName, "resizable=yes,scrollbars=yes,status=yes"); } else { WindowObjectReference.focus(); }; } </script> (...) <p><a href="http://www.spreadfirefox.com/" target="PromoteFirefoxWindow" onclick="openRequestedPopup(this.href, this.target); return false;" title="Ce lien créera une nouvelle fenêtre ou en réutilisera une déjà ouverte">Promouvoir l'adoption de Firefox</a></p>
Vous pouvez également ne permettre à cette fonction que d'ouvrir une seule fenêtre secondaire et de la réutiliser pour d'autres liens de cette manière :
<script type="text/javascript"> var WindowObjectReference = null; // variable globale var PreviousUrl; /* variable globale qui stockera l'URL actuellement chargée dans la fenêtre secondaire */ function openRequestedSinglePopup(strUrl) { if(WindowObjectReference == null || WindowObjectReference.closed) { WindowObjectReference = window.open(strUrl, "SingleSecondaryWindowName", "resizable=yes,scrollbars=yes,status=yes"); } else if(previousUrl != strUrl) { WindowObjectReference = window.open(strUrl, "SingleSecondaryWindowName", "resizable=yes,scrollbars=yes,status=yes"); /* si la ressource à charger est différente, on la charge dans la fenêtre secondaire déjà ouverte, et on ramène ensuite celle-ci par dessus sa fenêtre parente. */ WindowObjectReference.focus(); } else { WindowObjectReference.focus(); }; PreviousUrl = strUrl; /* explication : on stocke l'URL courante afin de pouvoir la comparer dans le cas d'un autre appel à cette fonction. */ } </script> (...) <p><a href="http://www.spreadfirefox.com/" target="SingleSecondaryWindowName" onclick="openRequestedSinglePopup(this.href); return false;" title="Ce lien créera une nouvelle fenêtre ou en réutilisera une déjà ouverte">Promouvoir l'adoption de Firefox</a></p> <p><a href="http://www.mozilla.org/support/firefox/faq" target="SingleSecondaryWindowName" onclick="openRequestedSinglePopup(this.href); return false;" title="Ce lien créera une nouvelle fenêtre ou en réutilisera une déjà ouverte">FAQ de Firefox</a></p>
"Scripts may not close windows that were not opened by script."
Si c'était possible, l'historique des URL visitées durant la session de navigation serait perdu au détriment de l'utilisateur.about:config
. Comme vos utilisateurs sont ceux qui sont supposés utiliser de telles fenêtres (et non vous en tant qu'auteur), le mieux est d'éviter d'interférer avec leurs habitudes et préférences. Il est recommandé de toujours positionner la redimensionnabilité et la présence de barres de défilement (si nécessaire) à yes
pour assurer l'accessibilité au contenu et l'utilisabilité des fenêtres. Ceci est dans l'intérêt tant de l'auteur Web que de ses utilisateurs.Édition/Préférences/Avancé/Scripts & plugins/Autoriser les scripts à/ Déplacer ou redimensionner des fenêtres existantes
dans Mozilla ou Outils/Options/Contenu/Activer JavaScript/Bouton Avancé/Déplacer ou redimensionner des fenêtres existantes
dans Firefox, ou en positionnant dom.disable_window_move_resize
à true dans about:config ou encore en éditant leur fichier user.js.Déplacer ou redimensionner des fenêtres existantes
. Déplacer et redimensionner une fenêtre à distance sur l'écran de l'utilisateur l'ennuiera très souvent, le désorientera, et au mieux sera incorrect. Les auteurs Web espèrent souvent avoir un contrôle absolu (et un pouvoir de décision) sur tous les aspects de positionnement et de taille des fenêtres de l'utilisateur ... ce qui n'est tout simplement pas vrai.window.open()
: elle sera null si la fenêtre n'a pas été autorisée à s'ouvrir. Cependant, pour la plupart des autres bloqueurs de popups, il n'existe pas de manière fiable.opener
liera la fenêtre secondaire à sa fenêtre principale (celle qui a déclenché son ouverture).window.open()
De manière générale, il est préférable d'éviter d'utiliser window.open() pour plusieurs raisons :
Si vous voulez permettre l'ouverture d'un lien dans une nouvelle fenêtre, suivez ces règles d'utilisabilité et d'accessibilité testées et éprouvées :
<a href="javascript:window.open(...)" ...>
Les liens « javascript: » sont toujours mauvais pour l'accessibilité et l'utilisabilité des pages Web dans tous les navigateurs.
Plus d'informations à ce sujet :
<a href="#" onclick="window.open(...);">
Un tel pseudo-lien met également en péril l'accessibilité des liens. Utilisez toujours une véritable URL pour la valeur de l'attribut href, afin que si JavaScript s'avère désactivé ou absent, ou si le navigateur ne peut pas ouvrir de fenêtre secondaire (comme Microsoft Web TV, les navigateurs en mode texte, etc.), de tels navigateurs pourront toujours charger la référence référencée dans leur mode de chargement/gestion de nouvelles ressources par défaut. Cette forme de code interfère également avec les fonctionnalités avancées de navigation par onglets de certains navigateurs, comme le clic du milieu et les raccourcis Ctrl+clic et Ctrl+Entrée sur les liens, les « mouse gestures », etc.
Identifiez les liens qui ouvriront de nouvelles fenêtre de manière à aider les utilisateurs en utilisant l'attribut title
du lien, en ajoutant une icône à la fin du lien, ou en modifiant le curseur de la souris.
Le but est d'avertir les utilisateurs à l'avance des changements de contexte pour réduire la confusion de leur part : changer la fenêtre courante ou afficher subitement une nouvelle fenêtre peut être très désorientant pour certains utilisateurs (le bouton Précédent devient inutilisable).
« Souvent, les utilisateurs ne remarquent pas qu'une nouvelle fenêtre s'est ouverte, particulièrement si ils utilisent un petit écran où les fenêtres sont agrandies pour utiliser toute la surface de l'écran. Ainsi, l'utilisateur voulant retourner à la page initiale sera dérouté par un boutonPrécédente grisé. »
citation de The Top TenNew Mistakes of Web Design: 2. Opening New Browser Windows, Jakob Nielsen, mai 1999
Lorsque des changements complets de contexte sont identifiés explicitement avant qu'ils se produisent, l'utilisateur peut déterminer s'il désire le faire ou s'y préparer : non seulement il ne sera pas perturbé ni désorienté, mais des utilisateurs plus expérimentés pourront eux-mêmes décider comment ouvrir de tels liens (dans une nouvelle fenêtre ou non, dans la même fenêtre, dans un nouvel onglet ou non, en arrière-plan ou non).
Références
Exemples de curseurs et icônes « Nouvelle fenêtre » | |||
Si JavaScript est désactivé ou absent, le navigateur créera une fenêtre secondaire ou affichera la ressource demandée selon sa gestion habituelle de l'attribut target : par exemple certains navigateurs ne pouvant pas créer de nouvelles fenêtres comme Microsoft Web TV, chargeront la ressource demandée et l'ajouteront à la fin du document courant. Le but et l'idée est d'essayer de fournir — sans l'imposer — à l'utilisateur une manière d'ouvrir la ressource référencée, de suivre le lien. Votre code ne doit pas interférer avec les fonctionnalités du navigateur à disposition de l'utilisateur, et doit toujours lui laisser le chemin libre et le choix de la décision finale.
target="_blank"
Fournissez toujours un nom significatif dans votre attribut target, et essayez de le réutiliser dans votre page afin qu'un clic sur un autre lien puisse charger la ressource dans une fenêtre déjà utilisée (ce qui rend l'opération beaucoup plus rapide pour l'utilisateur), ce qui justifie la raison (et les ressources système, et le temps dépensé) d'avoir créé une fenêtre secondaire. Utiliser une seule cible et la réutiliser pour plusieurs liens est bien moins gourmand en matière de ressources puisqu'une seule fenêtre est créée et recyclée. D'un autre côté, utiliser « _blank » comme attribut target créera plusieurs nouvelles fenêtre anonymes sur le bureau de l'utilisateur qui ne peuvent ni être recyclées ni réutilisées.
Dans tous les cas, si votre code est bien fait, il ne devrait pas interférer avec le choix final de l'utilisateur mais lui offrira plutôt des choix supplémentaires, plus de façons d'ouvrir les liens et plus de pouvoir sur l'outil qu'il utilise (son navigateur).
{{ DOM0() }} window.open()
ne fait partie d'aucune spécification ou recommandation technique du W3C.
Dans les cas où left
et screenX
(et/ou top
et screenY
) ont des valeurs contradictoires, left
et top
ont priorité sur screenX
et screenY
respectivement. Si left
et screenX
(et/ou top
et screenY
) sont définies dans la liste strWindowFeatures, les valeurs left
(et/ou top
) seront reconnues et utilisées. Dans l'exemple suivant, la nouvelle fenêtre sera positionnée à 100 pixels du bord gauche de la zone de travail des applications du système d'exploitation de l'utilisateur, et non à 200 pixels.
<script type="text/javascript"> WindowObjectReference = window.open("http://www.lemonde.fr/", "NomDeLaFenetreLeMonde", "left=100,screenX=200,resizable,scrollbars,status"); </script>
Si left
est défini, mais que top
n'a aucune valeur mais que screenY
en a une, left
et screenY
seront les coordonnées de positionnement de la fenêtre secondaire.
outerWidth
a priorité sur width
, et width
a priorité sur innerWidth
. outerHeight
a priorité sur height
et height
a priorité sur innerHeight
. Dans l'exemple suivant, les navigateurs basés sur Mozilla créeront une nouvelle fenêtre avec une taille extérieure (outerWidth) de 600 pixels de large et ignoreront la requête d'une largeur (width) de 500 pixels ainsi que celle d'une taille intérieure (innerWidth) de 400 pixels.
<script type="text/javascript"> WindowObjectReference = window.open("http://www.wwf.org/", "NomDeLaFenetreWWF", "outerWidth=600,width=500,innerWidth=400,resizable,scrollbars,status"); </script>
Les positions et dimensions demandées dans la liste strWindowFeatures ne seront pas respectées et seront corrigées si n'importe laquelle de ces valeurs ne permet pas à la fenêtre complète d'être affichée dans la zone de travail des applications du système d'exploitation de l'utilisateur. Aucune partie de la nouvelle fenêtre ne peut être initialement positionnée hors de l'écran. Ceci est le réglage par défaut de tous les navigateurs basés sur Mozilla.
Internet Explorer 6 SP2 dispose d'un mécanisme de correction d'erreur similaire, mais celui-ci n'est pas activé par défaut pour tous les niveaux de sécurité : un niveau de sécurité trop bas peut désactiver ce mécanisme de correction d'erreurs.
Lorsque le contenu dépasse les dimensions de la zone de visualisation de la fenêtre, des barres de défilement (ou un mécanisme de définement similaire) sont nécessaires pour s'assurer que les utilisateurs puissent accéder au contenu. Le contenu ou la boîte du document d'une page web peut outrepasser, excéder les dimensions demandées pour la fenêtre pour plusieurs raisons qui sont hors du contrôle des auteurs Web :
body
dans les différents navigateurs et versions de ceux-ciVous devez vous attendre à ce qu'une large majorité des navigateurs affichent la barre d'état, ou qu'une large majorité des utilisateurs voudront forcer sa présence : le mieux est de toujours positionner cette fonctionnalité à yes. De plus, si vous demandez spécifiquement de retirer la barre d'état, les utilisateurs de Firefox ne pourront plus utilser la barre de navigation de site si elle est installée. Dans Mozilla et dans Firefox, toutes les fenêtres peuvent être redimensionnées à partir de la zone inférieure droite de la barre d'état. Celle-ci fournit également des informations sur la connexion http, l'emplacement des ressources hypertextes, la barre de progression du téléchargement, l'icône de chiffrement/connexion sécurisée avec SSL (affichant une icône de cadenas jaune), des icônes de zones de sécurité, de politique de sécurité en matière de cookies, etc. Enlever la barre d'état retire souvent de très nombreuses fonctionnalités et informations considérées comme utiles (et parfois vitales) par les utilisateurs.
Dans Internet Explorer 6 pour XP SP2, pour les fenêtres ouvertes à l'aide de window.open() :
« Pour les fenêtres ouvertes à l'aide de window.open() :
Attendez-vous à ce que la barre d'état soit présente, et codez en conséquence. La barre d'état sera activée par défaut et fait entre 20 et 25 pixels de haut. (...) »
citation de Fine-Tune Your Web Site for Windows XP Service Pack 2, Browser Window Restrictions in XP SP2
« (...) les fenêtres créées à l'aide de la méthode window.open() peuvent être appelées par des scripts et utilisées pour imiter une fausse interface utilisateur ou bureau, ou pour masquer des informations ou des activités malveillantes en dimensionnant la fenêtre de manière à rendre la barre d'état invisible.
Les fenêtres d'Internet Explorer fournissent des informations de sécurité visibles par l'utilisateur pour l'aider à identifier avec certitude la source de la page et le niveau de sécurité de la communication avec cette page. Lorsque ces éléments ne sont pas visibles, les utilisateurs peuvent penser qu'ils sont sur une page plus digne de confiance ou interagissent avec un processus système alors qu'il sont en train d'interagir avec un hôte malveillant. (...)
Les fenêtres lancées par des scripts seront affichées entièrement, avec la barre de titre d'Internet Explorer et sa barre d'état. (...)
Gestion de la barre d'état d'Internet Explorer par les scripts
Description détaillée
Internet Explorer a été modifié pour ne désactiver la barre d'état pour aucune fenêtre. La barre d'état est toujours visible pour toutes les fenêtres d'Internet Explorer. (...) Sans ce changement, les fenêtres créées à l'aide de la méthode window.open() peuvent être appelées par des scripts et imiter une fausse interface utilisateur ou bureau, ou pour masquer des informations importantes pour l'utilisateur.
La barre d'état est une fonction de sécurité des fenêtres d'Internet Explorer qui fournissent à l'utilisateur des informations sur les zones de sécurité. Cette zone ne peut pas être imitée (...)"
citation de Changes to Functionality in Microsoft Windows XP Service Pack 2, Internet Explorer Window Restrictions
Dans Internet Explorer 6 pour XP SP2 :
Références :
en français :
Créer des pop-up intelligentes par Fabrice Bonny, OpenWeb
en anglais :
JavaScript windows (tutorial) par Lasse Reichstein Nielsen
The perfect pop-up (tutorial) par Ian Lloyd
Popup windows and Firefox (interactive demos) par Gérard Talbot
Links Want To Be Links by Jukka K. Korpela
Links & JavaScript Living Together in Harmony by Jeff Howden
{{ languages( { "en": "en/DOM/window.open", "ja": "ja/DOM/window.open", "pl": "pl/DOM/window.open", "zh-cn": "cn/DOM/window.open" } ) }}