2012-02-07 230 views
4

是否有任何理由为什么此代码可以在Safari和Chrome,但不IE或FF?JS检测浏览器的宽度和高度在Chrome浏览器和Safari浏览器,但不是IE9或FF9

JS

function load(){ 
    w.value = window.outerWidth; 
    h.value = window.outerHeight; 
} 

HTML

<input name="h" id="h" type="hidden" value="" /> 
<input name="w" id="w" type="hidden" value="" /> 

Click here for the entire page's source code

预先感谢帮助。

编辑:我想出了什么是错的。必须将以下内容添加到加载功能

var width = document.getElementById("w"); 
var height = document.getElementById("h"); 
width.value = window.outerWidth; 
height.value = window.outerHeight; 
+1

有什么不适合呢?它在做什么,它没有做什么,发生了什么错误等等。 – 2012-02-07 19:50:39

回答

4

Internet Explorer使用不同的属性来存储窗口大小。进入Internet Explorer客户端宽度/高度是内部窗口大小(减去滚动条,菜单等使用的像素)所以请尝试

function load(){ 
    if(window.outerHeight){ 
     w.value = window.outerWidth; 
     h.value = window.outerHeight; 
    } 
    else { 
     w.value = document.body.clientWidth; 
     h.value = document.body.clientHeight; 
    } 
} 
+0

你不妨使用jQuery的'.width()'/'.height()',这里使用的代码和你一样已经包括与jQuery。 – Jasper 2012-02-07 20:10:41

4

使用支持几乎所有浏览器的jQuery方法。

function load(){ 
    w.value = $(window).width(); 
    h.value = $(window).height(); 
} 

参考:width()height()

4

如果你正在使用jQuery的话,我建议使用.width().height(),因为他们将正常运行跨浏览器。 IE 8及以下版本不支持window.outerWidth

下面是window.outerWidth一些很好的文档:https://developer.mozilla.org/en/DOM/window.outerWidth

使用.width().height()将返回一个单位的数值(即像素),如果你想获得精确的高度/宽度套(含pxem),那么你可以使用.css('width').css('height')

相关问题