2010-08-11 9 views
6

Estoy usando javascript's window.open para abrir una ventana del navegador en un clic del usuario a un ancho y alto especificados (760x581), y esto funciona correctamente en Internet Explorer, Safari y Firefox, pero Google Chrome me está dando problemas. En los otros navegadores, la altura se usa correctamente como la altura del contenido, pero en Google Chrome hace que la ventana real del navegador tenga una altura de 581 píxeles en lugar del contenido. ¿Hay alguna manera de arreglar esto?window.open height no es lo mismo en Google Chrome que otros navegadores

<a href="http://domain.com/example.php" onclick="window.open('http://domain.com/example.php', '', 'width=760, height=581, top=15, left=15, toolbar=0, menubar=0, scrollbars=1, resizable=1, copyhistory=0, location=0, directories=0, status=1, titlebar=1, personalbar=0');return false">click here</a> 
+0

Como nota al margen, 'haga clic aquí' casi nunca es un buen texto de enlace. ;) –

+0

Haha bien, obviamente, solo un ejemplo ;-) –

Respuesta

4

Así que se metió con cosas más y descubrieron que algunos navegadores soportan la propiedad innerHeight para window.open y los siguientes trabajó como se esperaba en todos los navegadores con la altura contenido deseado en 775px con 50px añadido a solamente Chrome:

window.open($(this).attr('href'), 'videoplayer', 
    'width=1242, height=775, innerHeight=825, location=no, menubar=no, status=no, titlebar=no, scrollbars=no' 
); 

probé esto en Chrome 6.0.472.63, Firefox 3.6, 3 y 2, IE 8 & 7 y Opera 10.62. Cuando solo estaba usando height Chrome sería aproximadamente 50 px demasiado corto y tenía barras de desplazamiento, pero todos los navegadores anteriores estaban bien. Con la propiedad agregada innerHeight configurada en 50px más de lo que quiero, funcionó en Chrome y en todos los demás navegadores.

Actualización: Parece que esto crea un problema en Safari con una altura adicional de 50px. Buscará maneras de evitar eso.

+2

Probado recientemente con Chrome 14+ y parece que ya no es un problema. – donut

0

Bueno por lo que he sido capaz de encontrar después de buscar en Google para más de una hora es que esto es sólo la forma en Google Chrome lo hace y tenemos que sólo tiene que utilizar una solución. Lo que estoy haciendo ahora menos que se encuentre algo mejor es simplemente poniendo la siguiente JS en la página que estoy abriendo:

if (navigator.appVersion.indexOf('Chrome')>0) { 
    window.resizeBy(0, 581 - window.innerHeight); 
} 
+0

Gracias por la solución. Parece que, al menos en Mac, Chrome agrega 50 px a la altura. No sé si es diferente en otras plataformas. Realmente molesto cuando todos los otros navegadores se comportan correctamente. Me hace preguntar si esto es solo un error o si hay alguna otra opción para configurar cuando se usa 'window.open' en Chrome. – donut

1

El problema persiste (Chrome17 +), si llama a window.open con height = 600, el resultado innerheight de ventana de ventana es 564px, que es 36px corto (para la barra de título en Windows). La altura de la barra de título depende de la plataforma, por lo que es muy molesto.

Mi solución se acaba de agregar la diferencia a la altura.

Cuestiones relacionadas