2012-06-14 12 views
11

Ho una piccola funzione javascript che apre un URL in una nuova scheda:window.open con target "_blank" in Chrome

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

Questo funziona sempre quando chiamato lato client facendo clic su un pulsante, anche in cromo. Ma in Chrome non funziona quando si chiama dal lato server (!) Utilizzando

ScriptManager.RegisterClientScriptBlock() 

In Firefox e IE si apre l'URL in una nuova scheda, ma Chrome apre l'URL in una nuova finestra . Quale potrebbe essere una soluzione alternativa per forzare Chrome ad aprirlo in una nuova scheda?

+3

Penso che questa sia una configurazione specifica di Chrome. Non puoi controllarlo tramite script. – rcdmk

risposta

12

È un'impostazione cromata. Non puoi controllare come il browser interpreta il target _blank.

+2

Ma perché Chrome apre l'url in una nuova scheda se la funzione viene chiamata dal lato client quando si fa clic su un pulsante? Semplicemente non funziona quando viene chiamato utilizzando l'approccio lato server. –

+1

Probabilmente si tratta di un blocco popup. Molti browser vietano l'apertura di nuove finestre a causa del nulla, ma consentiranno la generazione di nuove finestre come risultato finale di un evento del mouse. –

+0

I browser hanno variabili interne che indicano le informazioni su come e dove è stata originata la chiamata (top of call stack) ad es. il browser deciderà di gestire l'apertura (o il blocco) dei popup in una finestra separata o in una nuova scheda in base al fatto che la chiamata sia originata da un particolare evento (evento di caricamento vs evento di clic o callback asincrono). –

0

Non puoi farlo perché non si può avere il controllo sul modo Chrome apre le sue finestre

11

"_blank" non è garantito per essere una nuova scheda o finestra. È implementato in modo diverso per browser.

È possibile, tuttavia, mettere qualcosa nel bersaglio. Di solito dico "_tab" e ogni browser che conosco lo apre in una nuova scheda.

Attenzione, significa che si tratta di un obiettivo con nome, quindi se provi ad aprire 2 URL, utilizzeranno la stessa scheda.

+1

+1 Questa dovrebbe essere la risposta corretta. – mjsarfatti

0

Come dice Dennis, non è possibile controllare come il browser sceglie di gestire target = _blank.

Se ti stai interrogando sul comportamento incoerente, probabilmente si tratta di un blocco popup. Molti browser vietano l'apertura di nuove finestre a causa del nulla, ma consentiranno la generazione di nuove finestre come risultato finale di un evento del mouse.

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

Questo non risponde alla domanda. –

Problemi correlati