2013-04-23 12 views
10

Czy mimo to należy ręcznie ustawić minimalną wielkość minimalizacji okna dla wszystkich przeglądarek?Ustawianie minimalnego limitu rozmiaru dla minimalizacji okna przeglądarki?

Nie wahaj się zadawać pytań, a także edytować pytanie.

Dobre odpowiedzi są zdecydowanie doceniane.

+3

jeśli chodzi o ograniczenie okna przeglądarki, to ostateczne ** nie ** (* bez ważnego powodu *). Jeśli masz na myśli rzeczywistą stronę, to 'min-width' jest twoim przyjacielem. –

+2

@ GabyakaG.Petrioli _" definitive ** no ** "_ jest zdecydowanie niepoprawny - [moja odpowiedź] (http://stackoverflow.com/a/16174183/356541) zapewnia rozwiązanie działające w Chrome. Pokornie sugeruję, aby ktokolwiek, kto myśli o wzmiankowaniu powyższego komentarza, również pomyślał o odrzuceniu mojej odpowiedzi, ze względu na potomność! – Barney

+0

@Barney OP stwierdza "*** dla wszystkich obsługi przeglądarki ***", a także rozwiązanie działa tylko wtedy, gdy okno jest otwarte przez 'window.open'. Oczywiście odpowiedź nie powinna być odrzucona, ponieważ zapewnia rozwiązanie niektórych scenariuszy i jest dobrym dodatkiem do pytania/odpowiedzi na przyszłość. –

Odpowiedz

20

Można spróbować

body { min-width:600px; } 

Dostaniesz poziomego paska przewijania, gdy rzutnia dostaje mniej niż 600px. Będzie to działać tylko w nowoczesnych przeglądarkach obsługujących właściwość CSS o minimalnej szerokości.

Nie sądzę, że możliwe jest ograniczenie użytkownika do zmiany rozmiaru, a nie powinno być!

+1

"Mogę" technicznie ograniczyć możliwość zmiany rozmiaru użytkowników (patrz [moja odpowiedź] (http://stackoverflow.com/a/16174183/356541)), chociaż zgadzam się z twoją opinią, że nie powinieneś. – Barney

18

Będziesz musiał użyć Javascript i utworzyć okno, o którym mowa, aby działało przez większość czasu, ponieważ ukośnice z zakładkami nie pozwalają ci na ponowne zdefiniowanie rozmiaru okna zawierającego inne zakładki. Nawet wtedy niektóre przeglądarki nie pozwolą ci tego zrobić.

Korzystanie window.open można dokonać danego okna o rozmiarze 640 * 480, określając:

window.open('http://www.your.url/','yourWindowsName','width=640,height=480'); 

w oknie można spróbować resizeTo wysokość i szerokość wywołane przez procedurę obsługi resize wydarzenie jak następuje:

function resizeToMinimum(){ 
    var minimum = [640, 480]; 
    var current = [window.outerWidth, window.outerHeight]; 
    var restricted = []; 
    var i   = 2; 

    while(i-- > 0){ 
    restricted[i] = minimum[i] > current[i] ? minimum[i] : current[i]; 
    } 

    window.resizeTo(current[0], current[1]); 
} 

window.addEventListener('resize', resizeToMinimum, false) 

Należy wziąć pod uwagę, że oba powyższe zachowania są kontrowersyjne, a to, co opisujesz, skutecznie ogranicza swobodę użytkownika w korzystaniu z przeglądarki zgodnie z własnym upodobaniem. W związku z tym nie spodziewałbym się, że będzie to działało wszędzie - ale tam, gdzie to robi, jest to kod, który pozwoli ci to zrobić.

+1

+1 za odpowiedź ... –

2
function resizeToMinimum(w,h){ 
    w=w>window.outerWidth?w:window.outerWidth; 
    h=h>window.outerHeight?h:window.outerHeight; 
    window.resizeTo(w, h); 
}; 
window.addEventListener('resize', function(){resizeToMinimum(100,100)}, false) 
0

Oto moje rozwiązanie dla zapewnienia rzeczywistej zawartości minimalną szerokość i wysokość, która obejmuje czynienia z „chrom” wymiarów różnych przeglądarce. To nie działa z Firefoksem, ale przetestowałem go w Edge i Chrome.

function ensureMinimumWindowSize(width, height) { 
    var tooThin = (width > window.innerWidth); 
    var tooShort = (height > window.innerHeight); 

    if (tooThin || tooShort) { 
     var deltaWidth = window.outerWidth - window.innerWidth; 
     var deltaHeight = window.outerHeight - window.innerHeight; 

     width = tooThin ? width + deltaWidth : window.outerWidth; 
     height = tooShort ? height + deltaHeight : window.outerHeight; 

     // Edge not reporting window outer size correctly 
     if (/Edge/i.test(navigator.userAgent)) { 
      width -= 16; 
      height -= 8; 
     } 

     window.resizeTo(width, height); 
    } 
} 

var resizeTimer; 
window.addEventListener('resize', function(event) { 
    clearTimeout(resizeTimer); 
    resizeTimer = setTimeout(function() { 
     ensureMinimumWindowSize(<width>,<height>); 
    }, 250); 
}, false); 
Powiązane problemy