web-dev-qa-db-fra.com

Target = '_ blank' à afficher dans une nouvelle fenêtre, PAS de nouvel onglet, possible?

Comment puis-je faire ceci?

Dans Firefox, le lien s'ouvre dans un nouvel onglet ... Je ne veux pas que les utilisateurs aient à définir les paramètres de leur navigateur pour cela ...

Je souhaite qu'une fenêtre contextuelle s'affiche avec le formulaire de contact chaque fois que l'utilisateur clique sur "contact" sur ma page principale.

Comment dois-je faire cela?

18
user188962

Vous ne pouvez pas contrôler cela - c'est entièrement à la discrétion de l'agent utilisateur; quel est le point, après tout. Tout ce que vous pouvez spécifier est que la page soit ouverte dans un contexte de volet de visualisation différent, et il appartient à l'utilisateur de décider de la façon dont il souhaite que votre fenêtre reprenne les raccourcis espace d'écran/liste des barres de tâches/Alt-Tab, etc.

En fait, j'irais même plus loin en disant que si possible, vous devriez éviter d'ouvrir un nouvel onglet/fenêtre. Je sais que je suis un peu ennuyé lorsque les sites Web le font, et cela semble un peu maladroit et des années 1990 avec tout ce que l'Ajax et les divs et la magie flottantes ont de nos jours.

28
Andrzej Doyle

Cela fonctionne bien

window.open(yoururl, "Popup", "location,status,scrollbars,resizable,width=800, height=800");

Pour tous les paramètres, voir window.open

20
M2012
<a href="javascript:window.open('http://example.com/popup.html','blank')">Contact</a>
12
Mark Byers

Je pense qu'il s'agit d'un paramètre de navigateur uniquement qui ne peut pas être défini à partir de HTML ou de Javascript.

3
Joe

Vous ne pouvez pas contrôler cela.

Mais vous pouvez essayer d’ouvrir dans une nouvelle fenêtre, puis d’afficher une autre solution si le navigateur refuse la tentative.

Vous pouvez accomplir cela en vérifiant la valeur de retour de window.open ().

var win = window.open(strUrl, strWindowName);
if (!win) {
    // Call failed. Handle it here. 
    // You can for example open content in a model or show a button that 
    // will open content in a new tab
}

documentation window.open: https://developer.mozilla.org/en-US/docs/Web/API/Window/open

0
HoffZ

En examinant cette question, j'ai remarqué que ce sont les parties "hauteur" et "largeur" ​​de la fonction window.open () qui ont ouvert le lien dans une nouvelle fenêtre au lieu d'un nouvel onglet.

Donc, pour ouvrir un navigateur de taille similaire, je viens de passer les fonctions window.innerHeight et window.innerWidth à la fonction window.open ().

J'aurais juste commenté la réponse de @ M2012, mais je n'ai pas encore assez de points ...

J'espère que cela t'aides!

0
vancy.pants

C'est aussi un moyen facile mais le lien n'est pas visible, il est approprié pour l'action du bouton

<a onclick="window.open('print.html', 'newwindow', 'width=300,height=250');"> Print</a>
0
A.A Noman

Meilleure façon d'ouvrir une nouvelle fenêtre en HTML. 

<a href="#" onclick="MM_openBrWindow('http://www.google.com','','resizable=yes,width=800,height=600')"> Google</a>

<script>
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
</script>
0
Blackspade

Si vous voulez utiliser cette chose en utilisant Code Behind, cela fonctionnera également ...

protected void lnkAddNewWorkout_Click(object sender, EventArgs e)
    {
  //  Response.Write("<script>window.open('MyCreatedWorkout.aspx','_blank');</script>");    //it Open in new tab

    ResponseHelper.Redirect("MyCreatedWorkout.aspx", "_blank", "menubar=0,width=700,height=700");

    }



 public static class ResponseHelper
    {
        public static void Redirect(string url, string target, string windowFeatures)
        {
            HttpContext context = HttpContext.Current;
        if ((String.IsNullOrEmpty(target) ||
            target.Equals("_self", StringComparison.OrdinalIgnoreCase)) &&
            String.IsNullOrEmpty(windowFeatures))
        {

            context.Response.Redirect(url);
        }
        else
        {
            Page page = (Page)context.Handler;
            if (page == null)
            {
                throw new InvalidOperationException(
                    "Cannot redirect to new window outside Page context.");
            }
            url = page.ResolveClientUrl(url);

            string script;
            if (!String.IsNullOrEmpty(windowFeatures))
            {
                script = @"window.open(""{0}"", ""{1}"", ""{2}"");";
            }
            else
            {
                script = @"window.open(""{0}"", ""{1}"");";
            }

            script = String.Format(script, url, target, windowFeatures);
            ScriptManager.RegisterStartupScript(page,
                typeof(Page),
                "Redirect",
                script,
                true);
        }
    }
}

Référencé par: http://www.codeproject.com/Tips/317410/Response-Redirect-into-a-new-window

0
Durgesh Pandey