2008-10-05 124 views
1

我試圖用javascript來設置元素的寬度和高度來覆蓋整個瀏覽器視口,我成功地使用適當的IE6 HTML元素尺寸

document.body.clientHeight
,但在IE6中,似乎我總是會獲得水平和垂直滾動條因爲元素必須稍大。

現在,我真的不想使用瀏覽器特定的邏輯,並減去IE6中每個維度的像素或2。此外,我沒有使用CSS(寬度:100%等),因爲我需要像素數量。

有誰知道用IE6 +中的元素填充視口的更好方法(顯然也是所有優秀的瀏覽器)?

編輯:感謝歐文的建議,我相信jQuery將工作。我應該指出我需要一個不受工具包影響的解決方案。

回答

3

你有沒有考慮使用jQuery?它將大多數瀏覽器特定功能抽象爲一個通用接口。

var width = $(document).width(); 
var height = $(document.height(); 

$('#mySpecialElement').width(width).height(height); 
+0

我希望我可以使用jQuery,但我沒有控制: – 2008-10-13 14:51:16

3

可以利於事業......

http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/

<script type="text/javascript"> 
<!-- 

var viewportwidth; 
var viewportheight; 

// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight 

if (typeof window.innerWidth != 'undefined') 
{ 
     viewportwidth = window.innerWidth, 
     viewportheight = window.innerHeight 
} 

// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) 

else if (typeof document.documentElement != 'undefined' 
    && typeof document.documentElement.clientWidth != 
    'undefined' && document.documentElement.clientWidth != 0) 
{ 
     viewportwidth = document.documentElement.clientWidth, 
     viewportheight = document.documentElement.clientHeight 
} 

// older versions of IE 

else 
{ 
     viewportwidth = document.getElementsByTagName('body')[0].clientWidth, 
     viewportheight = document.getElementsByTagName('body')[0].clientHeight 
} 
document.write('<p>Your viewport width is '+viewportwidth+'x'+viewportheight+'</p>'); 
//--> 
</script> 
+0

嗯...不幸的是,這似乎並沒有給我任何不同的計算從我一直在使用。感謝您的幫助,雖然:) – 2008-10-10 16:21:19

1

啊哈!我忘了

document.documentElement.clientLeft
document.documentElement.clientTop

他們在IE中是2,在好的瀏覽器中是0。 所以使用

var WIDTH = ((document.documentElement.clientWidth - document.documentElement.clientLeft) || document.body.clientWidth);
等做了伎倆,高度相似的想法!