How do I get the size of the browser window using Prototype.js?
15,761
Solution 1
This is my solution that gives the same values as the Web Developer toolbar in Firefox.
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;
}
});
Solution 2
According to the Prototype 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
Solution 3
And the same idea but more compact:
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)
});
Solution 4
this works on all modern browser and ie6+:
var w = document.documentElement.clientWidth;
var h = document.documentElement.clientHeight;
A correct Doctype is required
Comments
-
DaveC about 2 years
How do I get the size of the browser window using Prototype.js version 1.6.0.3?
-
DaveC about 15 yearsThe width is different to what I get using Javascript and also the value from the Web Developer toolbar in Firefox. It is close enough in my this though