2009-05-07 14 views

Odpowiedz

4

To jest moje rozwiązanie, które daje te same wartości jak na pasku narzędzi Web Developer w Firefoksie.

var WindowSize = Class.create({ 
    width: function() 
    { 
     var myWidth = 0; 
     if (typeof(window.innerWidth) == 'number') 
     { 
      //Non-IE 
      myWidth = window.innerWidth; 
     } 
     else if (document.documentElement && document.documentElement.clientWidth) 
     { 
      //IE 6+ in 'standards compliant mode' 
      myWidth = document.documentElement.clientWidth; 
     } 
     else if (document.body && document.body.clientWidth) 
     { 
      //IE 4 compatible 
      myWidth = document.body.clientWidth; 
     } 
     return myWidth; 
    }, 
    height: function() 
    { 
     var myHeight = 0; 
     if (typeof(window.innerHeight) == 'number') 
     { 
      //Non-IE 
      myHeight = window.innerHeight; 
     } 
     else if (document.documentElement && document.documentElement.clientHeight) 
     { 
      //IE 6+ in 'standards compliant mode' 
      myHeight = document.documentElement.clientHeight; 
     } 
     else if (document.body && document.body.clientHeight) 
     { 
      //IE 4 compatible 
      myHeight = document.body.clientHeight; 
     } 
     return myHeight; 
    } 
}); 
21

Według Prototyp API documentation:

var viewport = document.viewport.getDimensions(); // Gets the viewport as an object literal 
var width = viewport.width; // Usable window width 
var height = viewport.height; // Usable window height 
+0

szerokość jest różna do tego, co otrzymuję za pomocą Javascript, a także wartość z paska narzędzi programistów WWW w Firefoksie. Jest wystarczająco blisko w moim przypadku, ale – DaveC

+0

wysokość zawsze wynosi 0 dla mnie – grosser

8

I ten sam pomysł, ale bardziej kompaktowy:

var WindowSize = Class.create({ 
    width: window.innerWidth || (window.document.documentElement.clientWidth || window.document.body.clientWidth), 
    height: window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight) 
}); 
2

to działa na wszystkie nowoczesne przeglądarki i IE6 +:

var w = document.documentElement.clientWidth; 
var h = document.documentElement.clientHeight; 

Wymagany jest poprawny Doctype

Powiązane problemy