2012-05-16 2 views
7

Для начала ... У меня нет никакого зловещего намерения подвергать пользователей всплывающим окнам или что-то в этом роде. Я просто хочу, чтобы пользователь не изменял размер окна браузера веб-страницы, к которой они уже прошли навигацию (что означает, что у меня нет доступа к/не хочу использовать window.open();). Я изучал это довольно долго и, похоже, не нашел прямого ответа.Отключить окно браузера Resize

Я чувствовал, что я был на пути с чем-то вдоль линий:

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

... безрезультатно. Я должен представить, что это возможно. Это? Если это так, я определенно буду благодарен за помощь.

Thanks

+5

Я должен спросить, почему? Окно браузера не должно ограничиваться. Если конечный пользователь хочет переместить его на другой экран и не может изменить его размер, это может создать потенциальные проблемы для конечного пользователя. Например, два экрана с разными разрешениями. –

+4

Вы должны * никогда не пытаться изменить поведение функциональности уровня базовой ОС (например, предотвратить изменение размера окна). *Когда-либо*. –

+1

@JohnHartsock - Может быть, он делает расширение для браузера или плагин? –

ответ

18

Сначала вы можете определить определенный размер.

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

Тогда это сделать:

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

Демо: http://jsfiddle.net/DerekL/xeway917/


Q: Не будет ли это вызвать бесконечный цикл изменения размера? - user1147171

Хороший вопрос. Это не приведет к бесконечному циклу изменения размера. В W3C specification указано, что событие resize должно быть отправлено только при изменении размера документа. Когда функция resizeTo попытается выполнить второй раз, окно будет иметь то же самое измерение, что и оно, и, таким образом, браузер не будет запускать событие изменения размера, поскольку размеры не были изменены.

+0

Спасибо @Derek. Это определенно похоже на то, о чем я думал. Я включил ваше предложение, и у меня все еще нет успеха. Однако, просто взглянув на то, что вы написали, я вижу, что это должно сработать. Это по-прежнему полезно для меня, потому что это подтверждает, что я должен что-то делать неправильно где-то еще ... вот почему я собираюсь отметить это как «ответил». Спасибо. –

+0

@tchnchn - он должен работать, потому что я использую его во всплывающих окнах своих расширений. ;) –

+1

Это очень раздражающая «особенность». Если он работает (и он не будет, с учетом OP), пользователь блокируется в любом размере, которое первоначально открывается из окна, что может быть полезно, но, вероятно, нет. – RobG

0

мне нужно сделать это сегодня (на панели открыл расширение хром), но мне нужно, чтобы позволить пользователю изменить высоту окна, но предотвратить их изменение ширины окна

@ решение Дерека заставило меня почти там, но я должен был настроить его, чтобы позволить изменения высоты, и из-за этого, бесконечный цикл изменения размеров был возможен, поэтому мне также необходимо было предотвратить это. Это моя версия ответа Дерека, который работает для меня довольно хорошо:

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; 
}); 
Смежные вопросы