2012-05-16 24 views
7

Para empezar ... No tengo la intención siniestra de someter a los usuarios a ventanas emergentes ni nada por el estilo. Simplemente quiero evitar que un usuario cambie el tamaño de la ventana del navegador de una página web a la que ya han navegado (lo que significa que no tengo acceso/no quiero usar window.open();). He estado investigando esto durante bastante tiempo y parece que no puedo encontrar una respuesta directa.Desactivar ventana del navegador Cambiar el tamaño

me sentí como si estuviera en la pista con algo en la línea de:

$(window).resize(function() { 
    var wWidth = window.width, 
    wHeight = window.height; 
    window.resizeBy(wWidth, wHeight); 
}); 

... en vano. Tengo que imaginar que esto es posible. ¿Lo es? Si es así, definitivamente agradecería la ayuda.

Gracias

+5

Debo preguntar por qué? La ventana del navegador no se supone que esté restringida. Si el usuario final desea moverlo a otra pantalla y no puede redimensionarlo, esto podría plantear posibles problemas para el usuario final. Ejemplo son dos pantallas con diferentes resoluciones. –

+4

Debería * nunca * intentar cambiar el funcionamiento de la funcionalidad del nivel del sistema operativo principal (por ejemplo, evitar el cambio de tamaño de una ventana). *Nunca*. –

+1

@JohnHartsock - ¿Tal vez está haciendo una extensión de navegador o un complemento? –

Respuesta

18

Primero puede determinar un tamaño definido.

var size = [window.width,window.height]; //public variable 

Luego de hacer esto:

$(window).resize(function(){ 
    window.resizeTo(size[0],size[1]); 
}); 

Demostración: http://jsfiddle.net/DerekL/xeway917/


Q: ¿Esto no provocar un bucle infinito de cambio de tamaño? - user1147171

Buena pregunta. Esto no causará un ciclo infinito de cambio de tamaño. El W3C specification indica que el evento resize debe enviarse solo cuando se ha cambiado el tamaño de una vista de documento. Cuando la función resizeTo intente ejecutarla por segunda vez, la ventana tendrá exactamente la misma dimensión que se acaba de configurar, por lo que el navegador no activará el evento de cambio de tamaño porque las dimensiones no se han modificado.

+0

Gracias @Derek. Esto es definitivamente lo que estaba pensando. He conectado su sugerencia y todavía no estoy teniendo éxito. Sin embargo, solo mirando lo que has escrito, puedo ver que esto debería funcionar. Esto sigue siendo útil para mí porque confirma que debo estar haciendo algo mal en otro lugar ... por lo que voy a marcar esto como 'respondido'. Gracias. –

+0

@tchnchn - Debería funcionar, porque lo estoy usando en las ventanas emergentes de mis extensiones. ;) –

+1

Esa es una "característica" muy molesta. Si funciona (y no lo hará, dado el OP), el usuario queda bloqueado en cualquier tamaño que se abra inicialmente, lo que podría ser útil, pero probablemente no lo sea. – RobG

0

que tenía que hacer esto hoy en día (por un panel abierto por una extensión de Chrome) pero necesitaba para permitir al usuario cambiar la altura de la ventana, pero evitar que el cambio de la anchura de la ventana

@ solución de Derek me tiene casi allí, pero tuve que ajustarlo para permitir cambios de altura y debido a eso, era posible un ciclo de ajuste de tamaño sin fin, así que tenía que evitar eso también. Esta es mi versión de la respuesta de Dereck que está funcionando bastante bien para mí:

var couponWindow = { 
    width: $(window).width(), 
    height: $(window).height(), 
    resizing: false 
}; 
var $w=$(window); 
$w.resize(function() { 
    if ($w.width() != couponWindow.width && !couponWindow.resizing) { 
    couponWindow.resizing = true; 
    window.resizeTo(couponWindow.width, $w.height()); 
    } 
    couponWindow.resizing = false; 
}); 
Cuestiones relacionadas