2012-05-16 9 views
7

Pour commencer ... Je n'ai pas l'intention sinistre de soumettre les utilisateurs à des popups ou quelque chose comme ça. Je veux simplement empêcher un utilisateur de redimensionner la fenêtre du navigateur d'une page Web vers laquelle il a déjà navigué (ce qui signifie que je n'ai pas accès à/ne veux pas utiliser window.open();). Je fais des recherches depuis un certain temps et je n'arrive pas à trouver une réponse simple.Désactiver la fenêtre du navigateur Redimensionner

je me sentais comme si j'étais sur la bonne voie avec quelque chose le long des lignes de:

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

... en vain. Je dois imaginer que c'est possible. Est-ce? Si oui, j'apprécierais certainement l'aide.

Merci

+5

Je dois demander pourquoi? La fenêtre du navigateur n'est pas supposée être restreinte. Si l'utilisateur final souhaite le déplacer vers un autre écran et ne peut pas le redimensionner, cela peut poser des problèmes potentiels à l'utilisateur final. L'exemple est deux écrans avec des résolutions différentes. –

+4

Vous ne devriez jamais essayer de modifier le comportement de la fonctionnalité de base du système d'exploitation (par exemple, empêcher le redimensionnement d'une fenêtre). *Déjà*. –

+1

@JohnHartsock - Peut-être qu'il fait une extension de navigateur ou un plugin? –

Répondre

18

Vous pouvez d'abord déterminer une taille définie.

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

Ensuite, faites ceci:

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

Démo: http://jsfiddle.net/DerekL/xeway917/


Q: Est-ce pas provoquer une boucle infinie de redimensionnement? - user1147171

Bonne question. Cela ne provoquera pas une boucle infinie de redimensionnement. Le W3C specification indique que l'événement resize doit être distribué uniquement lorsqu'une vue de document a été redimensionnée. Lorsque la fonction resizeTo tente d'exécuter la deuxième fois, la fenêtre aura exactement la même dimension que celle définie et le navigateur ne déclenchera pas l'événement de redimensionnement car les dimensions n'ont pas été modifiées.

+0

Merci @Derek. C'est certainement dans le sens de ce que je pensais. J'ai branché votre suggestion et je n'ai toujours pas de succès. Cependant, juste en regardant ce que vous avez écrit, je peux voir que cela devrait fonctionner. Cela m'est encore utile car cela confirme que je dois faire quelque chose de mal ailleurs ... c'est pourquoi je vais le marquer comme 'répondu'. THX. –

+0

@tchnchn - Ça devrait marcher, parce que je l'utilise dans les popups de mes extensions. ;) –

+1

C'est une "fonctionnalité" très ennuyante. Si cela fonctionne (et ce ne sera pas le cas, étant donné l'OP), l'utilisateur est verrouillé dans la taille initiale de la fenêtre, ce qui peut être utile, mais ce n'est probablement pas le cas. – RobG

0

que je devais faire aujourd'hui (pour un panneau ouvert par une extension de chrome) mais je nécessaire pour permettre à l'utilisateur de changer la hauteur de la fenêtre, mais les empêcher de changer la largeur de la fenêtre

@ solution de Derek m'a fait presque là mais j'ai dû le modifier pour permettre des changements de hauteur et à cause de cela, une boucle de redimensionnement sans fin était possible, donc je devais empêcher cela aussi. Ceci est ma version de la réponse de Dereck qui fonctionne très bien pour moi:

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; 
}); 
Questions connexes