javascript - not - ¿Solución provisional de "window.open" de Google Chrome?
window open object (8)
He estado trabajando en una aplicación web y, por una parte, necesito abrir una nueva ventana. Tengo esto funcionando en todos los navegadores, mi punto de fricción es con Google Chrome.
Chrome parece ignorar las características de la ventana que me está causando problemas, con lo que estoy luchando es que necesito que la barra de direcciones sea 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>
¡Cualquier ayuda sería gratamente recibida! Gracias por adelantado :)
Creo que actualmente no hay una forma de javascript para forzar que Chrome se abra como una nueva ventana en el modo de pestaña. Se ha enviado un ticket como aquí Pop-ups para mostrar como pestaña de forma predeterminada . 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 formulada en javascript se abre en una nueva ventana, no en una pestaña .
Esto funcionó para mí:
newwindow = window.open(url, "_blank", "resizable=yes, scrollbars=yes, titlebar=yes, width=800, height=900, top=10, left=10");
La location=1
parte debería habilitar una barra de ubicación editable.
Como nota al margen, puede soltar el atributo language="javascript"
de su secuencia de comandos, ya que ahora está en desuso.
actualización :
Establecer la statusbar=1
para el status=1
parámetro correcto status=1
funciona para mí
Las otras respuestas están desactualizadas. El comportamiento de Chrome para window.open
depende de dónde se llame. Ver también este tema .
Cuando se llama a window.open
desde un controlador que se desencadenó mediante una acción del usuario (por ejemplo, un evento onclick), se comportará de forma similar a <a target="_blank">
, que se abre de forma predeterminada en una nueva pestaña. Sin embargo, si se llama a window.open
otro lugar, Chrome ignora otros argumentos y siempre abre una nueva ventana con una barra de direcciones no editable.
Esto parece una especie de medida de seguridad, aunque la razón detrás de esto no está completamente clara.
No ponga un nombre para la ventana de destino cuando use window.open ("", "NAME", ....)
Si lo haces, solo puedes abrirlo una vez. Use _blank, etc. en lugar de.
Por lo que puedo decir, Chrome no funciona correctamente si está haciendo referencia a localhost (por ejemplo, está desarrollando un sitio localmente)
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 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 tampoco funciona, cuando se carga desde 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);
}
Tengo el mismo problema, Chrome no abre una nueva ventana desde el código (no controladores).
Encontré esta solución:
setTimeout(function () {
window.open(
url, ''name'', ''toolbar=1, scrollbars=1, location=1,
statusbar=0, menubar=1, resizable=1, width=800, height=600''
);
}, 1);
la barra de menú no debe, o 0, para que Google Chrome se abra en una nueva ventana en lugar de en una pestaña.