2010-04-03 36 views
50

He estado trabajando en una aplicación web y para una parte de ella necesito abrir una nueva ventana. Tengo esto funcionando en todos los navegadores, mi punto de fricción es con Google Chrome.Google Chrome "window.open" ¿solución alternativa?

Chrome parece ignorar las características de la ventana que me está causando problemas, lo que estoy luchando con lo que necesito es la barra de direcciones para ser editable dentro de la nueva ventana. FF, IE, Safari y Opera hacen esto bien, Chrome no.

Mi Código:

<script language="javascript" type="text/javascript"> 
<!-- 
function popitup(url) { 
newwindow=window.open(url,'name','toolbar=1,scrollbars=1,location=1,statusbar=0,menubar=1,resizable=1,width=800,height=600'); 
if (window.focus) {newwindow.focus()} 
return false; 
} 

// --> 
</script> 

sería recibida con gratitud Cualquier ayuda! Gracias de antemano :)

+0

Guau - eso es bastante raro. Algún tipo de característica de "seguridad" equivocada, me imagino. – Ray

+0

sí, es extraño, tomó un poco de trabajo llegar hasta aquí! lol – Paul

+2

Esto probablemente no es lo que quiere escuchar, pero no abra las cosas en las nuevas ventanas/pestañas. Si el usuario desea una nueva ventana, puede solicitarle a su navegador que lo haga. – jamesdlin

Respuesta

9

La parte location=1 debería permitir una barra de ubicación editable.

Como nota al margen, se puede eliminar el atributo language="javascript" de la secuencia de comandos, ya que ahora es obsoleto.

actualización:

Ajuste de los statusbar=1 al parámetro correcto status=1 funciona para mí

+0

gracias por la respuesta scunliffe :) Acabo de probar con esa configuración y la barra de direcciones muestra la URL pero aún no puede ser editada :( – Paul

+1

Gracias - Me faltaba el estado = 1 parte de los params, y eso había impedido que Chrome de tratarlo como una ventana con todas las funciones. open(). Cuando lo puse, comenzó a abrir ventanas en pestañas. –

5

Creo que actualmente no hay manera de javascript para forzar cromo para abrir una nueva ventana como en el modo de pestaña. Se ha enviado un ticket como aquí Pop-ups to show as tab by default. Pero el usuario puede hacer clic en el icono de cromo en la esquina superior izquierda y seleccionar "Mostrar como pestaña", la barra de direcciones luego se puede editar.

Una pregunta similar se le preguntó en javascript open in a new window not tab.

+0

Si no especificas las propiedades de la ventana cuando abres una ventana, debería ponerla en una pestaña Por el contrario, si desea que se abra una ventana en lugar de una pestaña, especifique al menos una propiedad de ventana. – nickytonline

+1

El problema del OP no se trata de abrir como una nueva ventana o pestaña. En Chrome, OP abre una nueva ventana, pero la ubicación la barra está atenuada. La barra de direcciones solo se puede editar cuando la nueva ventana es "mostrar como pestaña". – Dingle

+0

gracias por la entrada de Dingle, podría ser capaz de evitar que algo ow;) – Paul

15

Esto funcionó para mí:

newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10"); 
+1

No funciona en Chrome 27. – feklee

+1

Depende de dónde se llame, vea mi respuesta a continuación. – Jeroen

+0

no funciona para mí con una ventana con nombre (está abriendo una nueva ventana en lugar de una existente), independientemente de dónde se llame desde @jeroen – charley

2

No ponga un nombre para ventana de destino cuando se utiliza window.open ("", "name", ....)

Si hazlo solo puedes abrirlo una vez Use _blank, etc. en lugar de.

3

menubar no debe, o 0, para que Google Chrome se abra en una nueva ventana en lugar de la pestaña.

+0

Esta solución funciona en Google Chrome 29/Opera 20, aunque las ventanas de posicionamiento en estos dos navegadores (usando "left = XX & top = YY") no funcionan como se esperaba. (se supone que es un error en ambos navegadores) –

25

Las demás respuestas están desactualizadas. El comportamiento de Chrome para window.open depende de dónde se llame. Vea también this topic.

Cuando window.open se llama desde un controlador que se desencadenó a través de una acción del usuario (por ejemplo, evento onclick), se comportará como <a target="_blank"> similares, que por defecto se abre en una nueva pestaña. Sin embargo, si se llama a window.open en otro lugar, Chrome ignora otros argumentos y siempre abre una nueva ventana con una barra de direcciones no editable.

Esto se ve como una especie de medida de seguridad, aunque la razón de que no está completamente claro.

+3

¿Sabes si hay alguna documentación oficial sobre esto? –

0

Por lo que yo puedo decir, cromo no funciona correctamente si se hace referencia a localhost (por ejemplo, está desarrollando un sitio local)

esto funciona:

var windowObjectReference; 
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes"; 

function openRequestedPopup() { 
    windowObjectReference = window.open("http://www.cnn.com/", "CNN_WindowName", strWindowFeatures); 
} 

Esto no lo hace funciona

var windowObjectReference; 
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes"; 

function openRequestedPopup() { 
    windowObjectReference = window.open("http://localhost/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures); 
} 

Esto también no funciona, cuando está cargado de http://localhost/webappFolder/Landing.do

var windowObjectReference; 
var strWindowFeatures = "menubar=yes,location=yes,resizable=yes,scrollbars=yes,status=yes"; 

function openRequestedPopup() { 
    windowObjectReference = window.open("/webappFolder/MapViewer.do", "CNN_WindowName", strWindowFeatures); 
} 
0

Tengo el mismo problema, Chrome no abre una nueva ventana desde el código (no controladores).
me encontré con esta solución:

setInterval(function() { 
    window.open(
     url, 'name', 'toolbar=1, scrollbars=1, location=1, 
     statusbar=0, menubar=1, resizable=1, width=800, height=600' 
    ); 
}, 1); 
+0

Esto realmente no responde la pregunta. Si tiene una pregunta diferente, puede formularla haciendo clic en [Preguntar pregunta] (https://stackoverflow.com/questions/ask). También puede [agregar una recompensa] (https://stackoverflow.com/help/privileges/set-bounties) para atraer más atención a esta pregunta una vez que tenga suficiente [reputación] (https://stackoverflow.com/help/ que-reputación). - [De la crítica] (/ reseña/mensajes de baja calidad/18301536) –

+1

@cezar Esta no es una nueva pregunta. Tenga en cuenta la parte que dice "Encontré una solución". – showdev