web-dev-qa-db-fra.com

window.open avec la cible "_blank" dans Chrome

J'ai une petite fonction javascript qui ouvre une URL dans un nouvel onglet:

function RedirectToPage(status) {
   var url = 'ObjectEditor.aspx?Status=' + status;
   window.open(url , '_blank');
}

Cela fonctionne toujours lorsque vous êtes appelé côté client en cliquant sur un bouton, même en chrome. Mais dans Chrome, cela ne fonctionnera pas s’il est appelé depuis le serveur (!) En utilisant 

ScriptManager.RegisterClientScriptBlock()

Dans Firefox et IE, il ouvre l'URL dans un nouvel onglet, mais Chrome ouvre l'URL dans une nouvelle fenêtre. Qu'est-ce qui pourrait être une solution de contournement pour forcer Chrome à l'ouvrir dans un nouvel onglet?

15
Jan-Patrick Ahnen

C'est un décor en chrome. Vous ne pouvez pas contrôler la manière dont le navigateur interprète le _blank cible.

14
Dennis Traub

"_blank" n'est pas nécessairement un nouvel onglet ou une nouvelle fenêtre. Il est implémenté différemment par navigateur.

Vous pouvez cependant mettre n'importe quoi dans la cible. En général, je dis simplement "_tab", et chaque navigateur que je connais ne l'ouvre que dans un nouvel onglet.

Sachez que cela signifie que c'est une cible nommée. Si vous essayez d'ouvrir deux URL, ils utiliseront le même onglet.

15
Jordan

Comme le dit Dennis, vous ne pouvez pas contrôler la manière dont le navigateur choisit de traiter target = _blank.

Si vous vous interrogez sur le comportement incohérent, il s'agit probablement d'un blocage des fenêtres publicitaires. De nombreux navigateurs interdiront l’ouverture de nouvelles fenêtres sans rien proposer, mais autoriseront l’apparition de nouvelles fenêtres à la suite d’un événement de clic de souris.

0
Evan Harper

Vous ne pouvez pas le faire car vous ne pouvez pas contrôler la manière dont Chrome ouvre ses fenêtres.

0
Aelios
window.open(skey, "_blank", "toolbar=1, scrollbars=1, resizable=1, width=" + 1015 + ", height=" + 800);
0
Guillermo