65 votes

Solution de contournement de Google Chrome "window.open" ?

J'ai travaillé sur une application web et pour une partie de celle-ci, j'ai besoin d'ouvrir une nouvelle fenêtre. Cela fonctionne sur tous les navigateurs, mais mon point faible est Google Chrome.

Chrome semble ignorer les caractéristiques de la fenêtre, ce qui me pose des problèmes. Ce qui me pose problème, c'est que j'ai besoin que la barre d'adresse soit modifiable dans la nouvelle fenêtre. FF, IE, Safari et Opera le font bien, mais pas Chrome.

Mon code :

function popitup(url) {
  newwindow=window.open(url, 'name', 'toolbar=1,scrollbars=1,location=1,statusbar=0,menubar=1,resizable=1,width=800,height=600');
  if (window.focus) {
    newwindow.focus()
  }
  return false;
}

1 votes

Wow - c'est assez bizarre. Une sorte de fonction de sécurité malavisée, j'imagine.

0 votes

Oui, c'est un drôle d'oiseau, il a fallu travailler pour en arriver là ! lol

3 votes

Ce n'est probablement pas ce que vous voulez entendre, mais n'ouvrez pas les choses dans de nouvelles fenêtres/onglets. Si l'utilisateur veut une nouvelle fenêtre, il peut demander à son navigateur de le faire.

36voto

Jeroen Points 4979

Les autres réponses sont dépassées. Le comportement de Chrome pour window.open dépend de l'endroit d'où il est appelé. Voir aussi ce sujet .

Lorsque window.open est appelé à partir d'un gestionnaire qui a été déclenché par une action de l'utilisateur (par exemple l'événement onclick), il se comportera de la même façon que <a target="_blank"> qui s'ouvre par défaut dans un nouvel onglet. Toutefois, si window.open est appelé ailleurs, Chrome ignore les autres arguments et ouvre toujours une nouvelle fenêtre avec une barre d'adresse non modifiable.

Cela ressemble à une sorte de mesure de sécurité, bien que le raisonnement qui la sous-tend ne soit pas tout à fait clair.

7 votes

Savez-vous s'il existe une documentation officielle à ce sujet ?

26voto

Ben Points 91

Cela a marché pour moi :

newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10");

1 votes

Cela dépend de l'endroit d'où il est appelé, voir ma réponse ci-dessous.

0 votes

Ne fonctionne pas pour moi avec une fenêtre nommée (il ouvre une nouvelle fenêtre plutôt qu'une fenêtre existante), indépendamment de l'endroit d'où il est appelé @jeroen

9voto

scunliffe Points 30964

El location=1 devrait permettre d'activer une barre d'emplacement modifiable.

À titre d'information, vous pouvez laisser tomber le language="javascript" de votre script car il est maintenant déprécié.

mise à jour :

Définir le statusbar=1 au paramètre correct status=1 fonctionne pour moi

0 votes

Merci pour la réponse scunliffe :) Je viens d'essayer avec ces paramètres et la barre d'emplacement affiche l'URL mais ne peut toujours pas être modifiée :(

1 votes

Merci - il me manquait la partie status=1 des paramètres, et cela avait empêché chrome de la traiter comme un window.open() complet. Lorsque je l'ai ajouté, il a commencé à ouvrir les fenêtres dans les onglets.

5voto

Dingle Points 902

Je crois qu'il n'existe actuellement aucun moyen en javascript de forcer Chrome à s'ouvrir comme une nouvelle fenêtre en mode onglet. Un ticket a été soumis comme ici Les fenêtres pop-up s'affichent par défaut sous forme d'onglet . Mais l'utilisateur peut cliquer sur l'icône de chrome dans le coin supérieur gauche et sélectionner "Afficher comme onglet", la barre d'adresse devient alors modifiable.

Une question similaire posée dans javascript ouvrir dans une nouvelle fenêtre pas onglet .

0 votes

Si vous ne spécifiez pas de propriétés et de fenêtre lorsque vous ouvrez une fenêtre, celle-ci devrait être placée dans un onglet. Inversement, si vous voulez qu'une fenêtre s'ouvre au lieu d'un onglet, spécifiez au moins une propriété de fenêtre.

1 votes

Le problème de l'OP ne concerne pas l'ouverture d'une nouvelle fenêtre ou d'un nouvel onglet. Dans chrome, le PO ouvre une nouvelle fenêtre, mais la barre d'adresse est grisée. La barre d'adresse n'est modifiable que lorsque la nouvelle fenêtre est "affichée comme onglet".

0 votes

Merci pour votre contribution Dingle, je devrais pouvoir contourner ce problème d'une manière ou d'une autre ;)

2voto

user1564053 Points 41

Ne mettez pas de nom pour la fenêtre cible lorsque vous utilisez window.open("", "NOM",....)

Si vous le faites, vous ne pourrez l'ouvrir qu'une seule fois. Utilisez _blank, etc. au lieu de.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X