2012-06-14 20 views
11

que tienen una pequeña función de JavaScript que abre un URL en una nueva pestaña:window.open con objetivo "_blank" en Chrome

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

Esto siempre funciona cuando llama del lado del cliente haciendo clic en un botón, incluso en cromo. Pero en Chrome no va a funcionar cuando se llama desde el lado del servidor (!) Mediante el uso de

ScriptManager.RegisterClientScriptBlock() 

En Firefox e IE se abre la URL en una nueva pestaña, pero cromo abre la URL en una nueva ventana . ¿Qué podría ser una solución alternativa para forzar a Chrome a abrirla en una pestaña nueva?

+3

Creo que se trata de una configuración específica de Chrome. No puedes controlar esto a través del script. – rcdmk

Respuesta

12

Es una configuración en cromo. No puede controlar cómo interpreta el navegador el objetivo _blank.

+2

¿Pero por qué Chrome abre la url en una nueva pestaña si la función se llama desde el lado del cliente cuando se hace clic en un botón? Simplemente no funciona cuando se llama utilizando el enfoque del lado del servidor. –

+1

Probablemente sea pop-up blocking. Muchos navegadores prohibirán que se abran nuevas ventanas a propósito de nada, pero permitirán que se generen nuevas ventanas como el resultado final de un evento de clic del mouse. –

+0

Los navegadores tienen variables internas que indican información sobre cómo y dónde se originó la llamada (parte superior de la pila de llamadas), p. el navegador decidirá gestionar la apertura (o bloqueo) de las ventanas emergentes en una ventana separada o en una nueva pestaña en función de si la llamada se originó a partir de un evento particular (evento de carga frente a evento de clic frente a devolución de llamada asincrónica). –

0

No puede hacerlo porque no se puede tener un control sobre la manera Chrome abre sus ventanas

11

"_blank" no se garantiza que sea una nueva pestaña o ventana. Se implementa de manera diferente por navegador.

Sin embargo, puede poner cualquier cosa en el objetivo. Normalmente solo digo "_tab", y cada navegador que conozco solo lo abre en una nueva pestaña.

Tenga en cuenta que significa que es un objetivo designado, por lo que si intenta abrir 2 URL, usarán la misma pestaña.

+1

+1 Esta debería ser la respuesta correcta. – mjsarfatti

0

Como dice Dennis, no puede controlar cómo el navegador elige manejar target = _blank.

Si se está preguntando sobre el comportamiento incoherente, probablemente sea un bloqueo de ventanas emergentes. Muchos navegadores prohibirán que se abran nuevas ventanas a propósito de nada, pero permitirán que se generen nuevas ventanas como el resultado final de un evento de clic del mouse.

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

Esto no responde la pregunta. –

Cuestiones relacionadas