2009-12-02 10 views
15

Come posso fare questo?Target = '_ blank' per mostrare in una nuova finestra, NON una nuova scheda, possibile?

in Firefox il link si apre in una nuova scheda ... non voglio che gli utenti devono configurare le impostazioni dei loro browser per questo ...

Voglio un pop-up di apparire con Contatti- modulo ogni volta che l'utente fa clic su "contatto" nella mia pagina principale.

Come devo fare?

+11

Si dovrebbe davvero riconsiderare. L'utente dovrebbe avere il controllo del proprio ambiente. http://www.joelonsoftware.com/uibook/fog0000000249.html – soulmerge

+1

Posso parlare solo per me stesso, ma: I siti che aprono Popup per qualcosa ottengono automaticamente punti detratti nel mio libro. Se vuoi davvero una nuova finestra di dialogo, forse una finestra di dialogo JavaScript - modale o meno - è più user-friendly? Ad esempio, la finestra di dialogo dell'interfaccia utente jQuery: http://jqueryui.com/demos/dialog/#default –

risposta

27

Non è possibile controllare questo - è interamente a discrezione dello user-agent; che è il punto, dopo tutto. Tutto ciò che è possibile specificare è che la pagina venga aperta in un contesto di viewpane diverso, e spetta all'utente decidere come desiderano che la finestra occupi lo spazio dello schermo/elenco della barra delle applicazioni/Tasti di scelta rapida ecc.

In Infatti andrei ancora oltre e direi che, se possibile, dovresti evitare di aprire una nuova scheda/finestra. So che mi infastidisce un po 'quando i siti web fanno questo, e sembra un po' goffi e anni '90 quello che con tutti gli Ajax, i flottanti e la magia che abbiamo oggigiorno.

+2

È necessaria per flussi come OAuth.E sembra che altri abbiano compiuto questa impresa. – Cunning

3

Credo che questa sia un'impostazione del browser che non può essere impostata da HTML o Javascript.

+1

e non dovrebbe essere. – Broam

+2

Impossibile impostare SET, ma Javascript PU CAN aprire una nuova finestra come indicato da @Mark Byers. – adamdport

11
<a href="javascript:window.open('http://example.com/popup.html','blank')">Contact</a> 
+0

Credo che tu intenda window.open. –

+2

E '_blank'. E 'void', altrimenti il' current to reference 'della finestra sostituirà il documento corrente. E ancora non funziona (si aprirà in una nuova finestra se è configurato il browser). E inaccessibile a causa dell'uso inutile di 'javascript:' URL (non usarli mai). – bobince

+0

Sicuramente non penso che dovresti farlo, ma puoi farlo. Gli URL javascript inaccessibili sono un problema che può essere facilmente risolto modificando il documento su Load. –

-8

Non è possibile specificare un collegamento che si apre in una nuova scheda - ricorda che non tutti i browser supportano le schede!

+4

Ma non è quello che ha chiesto. –

14

Questo funziona bene

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

Per tutti i parametri vedere window.open

+1

Questo dovrebbe avere più upvotes .. Mentre è in ultima analisi, fino al browser, l'utilizzo di questo indica al browser che si suppone che sia un popup. –

+0

Come funziona questa tariffa rispetto a un blocco popup? –

+0

D'accordo con John: la risposta di Kiran os OK. Le window.open di base non funzionano: Firefox (ad esempio) si apre in una nuova scheda. Ma il metodo di Kiran è giusto. – Peter

0

Se si desidera utilizzare questa cosa utilizzando il codice allora funzionerà anche ...

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); 
     } 
    } 
} 

Refrenced Di: http://www.codeproject.com/Tips/317410/Response-Redirect-into-a-new-window

0

Non è possibile controllare Questo.

Ma si può provare ad aprire in una nuova finestra e quindi mostrare una soluzione alternativa se il browser rifiuta il tentativo.

È possibile eseguire questa operazione controllando il valore restituito da 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 
} 

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

0

Il modo migliore per aprire una nuova finestra in 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

La domanda riguarda specificamente la forzatura di una nuova finestra da aprire piuttosto che una scheda e come [l'articolo MDN] (https://developer.mozilla.org/en-US/docs/Web/API/Window/open #Usability_issues) per window.open() indica, è improbabile che il comportamento sia come desiderato in un browser moderno, anche se questo apparentemente sarebbe il JS più semplice per aprire una finestra. – Jmills

0

Questo è anche un modo facile, ma link non è visibile, è opportuno per l'azione pulsante

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