2012-05-16 13 views
7

Na początek ... Nie mam złowieszczych zamiarów poddawania użytkowników wyskakującym okienkom ani temu podobnemu. Po prostu chcę uniemożliwić użytkownikowi zmianę rozmiaru okna przeglądarki strony, do której już nawigował (co oznacza, że ​​nie mam dostępu do/nie chcę używać window.open();). Badam to od dłuższego czasu i nie mogę znaleźć prostej odpowiedzi.Wyłącz Zmienianie rozmiaru okna przeglądarki

Czułem się, jakbym był na torze coś wzdłuż linii:

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

... bezskutecznie. Muszę sobie wyobrazić, że to możliwe. Czy to jest? Jeśli tak, zdecydowanie doceniam pomoc.

Dzięki

+5

Muszę zapytać, dlaczego? Okno przeglądarki nie powinno być ograniczone. Jeśli użytkownik końcowy chce przenieść go na inny ekran i nie może zmienić jego rozmiaru, może to potencjalnie spowodować problemy dla użytkownika końcowego. Przykładem są dwa ekrany o różnych rozdzielczościach. –

+4

Należy * nigdy * próbować zmienić zachowanie podstawowej funkcjonalności systemu operacyjnego (np. Zapobiegając zmianie rozmiaru okna). *Zawsze*. –

+1

@JohnHartsock - Może robi rozszerzenie przeglądarki lub wtyczkę? –

Odpowiedz

18

Najpierw można określić określony rozmiar.

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

Wtedy to zrobić:

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

Demo: http://jsfiddle.net/DerekL/xeway917/


Q: Nie będzie to spowodować nieskończoną pętlę rozmiaru? - user1147171

Ładne pytanie. To nie spowoduje nieskończonej pętli zmiany rozmiaru. W3C specification stwierdza, że ​​zdarzenie resize musi zostać wysłane tylko po zmianie rozmiaru widoku dokumentu. Gdy funkcja resizeTo spróbuje wykonać drugi raz, okno będzie miało dokładnie ten sam wymiar, który właśnie ustawiono, a zatem przeglądarka nie uruchomi zdarzenia zmiany rozmiaru, ponieważ wymiary nie zostały zmienione.

+0

Dzięki @Derek. Jest to zdecydowanie zgodne z tym, o czym myślałem. Podłączyłem Twoją sugestię i nadal nie osiągam sukcesu. Jednak patrząc na to, co napisałeś, widzę, że to powinno działać. Jest to dla mnie nadal przydatne, ponieważ potwierdza, że ​​muszę zrobić coś złego w innym miejscu ... i dlatego zamierzam oznaczyć to jako "udzielone". Dzięki. –

+0

@tchnchn - Powinien działać, ponieważ używam go w wyskakujących okienkach rozszerzeń. ;) –

+1

To bardzo denerwująca "funkcja". Jeśli to działa (i nie będzie, biorąc pod uwagę OP), użytkownik jest zablokowany w dowolnym rozmiarze, które początkowo otwiera okno, co może być przydatne, ale prawdopodobnie nie jest. – RobG

0

muszę zrobić to dzisiaj (na panelu otwartym przez rozszerzenie Chrome), ale konieczna, aby umożliwić użytkownikowi zmienić wysokość okna, ale zapobiec ich zmianie szerokości okna

@ rozwiązania Dereka Got Me prawie ale musiałem go zmodyfikować, aby umożliwić zmiany wysokości, i dlatego możliwa była nieskończona pętla zmiany rozmiaru, więc musiałem temu zapobiec. To jest moja wersja odpowiedzi Derecka, która działa całkiem dobrze dla mnie:

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; 
}); 
Powiązane problemy