2013-07-08 57 views
0

請考慮此HTA:HTA Document.Body.OffsetHeight與DOCTYPE

<html> 
<head> 
<title>My HTML application</title> 
<HTA:APPLICATION 
    APPLICATIONNAME="My HTML application" 
    ID="MyHTMLapplication" 
    SCROLL="No" 
    VERSION="1.0"/> 
</head> 

<script language="VBScript"> 

Sub Window_OnLoad 

    ResizeTo 100, 100 
    msgbox Document.Body.OffsetWidth & "x" & Document.Body.OffsetHeight 

End Sub 

</script> 

<body style="border:0;margin:0"></body> 
</html> 

在我的電腦會報告:111x66,這就是窗口的實際大小,而不窗框。

現在,如果我將<!DOCTYPE html>添加到此HTA,我會得到:107x19其中寬度實際上是正確的,但不是高度。
如果我甚至想用<meta http-equiv="X-UA-Compatible" content="IE=EDGE">我得到:107x0

我的HTA取決於文檔類型,我無法將其刪除。 OTOH我希望能夠檢測到實際的窗口大小並採取行動。

有人可以解釋爲什麼Document.Body.OffsetHeight的行爲如此,或者可能提供其他解決方案來檢測正確的窗口大小(body元素大小)?

+0

你檢查出http://stackoverflow.com/questions/5503242/how-to-獲得最尺寸的-A-HTA窗口? – EricLaw

+0

我現在看到了它,但它使用了相同的變量「Document.Body.OffsetHeight」,正如我所報告的,它與doctype聲明一起使用時不包含有意義的值 - 它始終返回相同的值,無論窗口大小如何。 – theta

回答

0

默認情況下,HTA處於向後兼容模式,其中document.body.offsetWidthdocument.body.offsetHeight返回預期結果。

隨着DOCTYPE聲明HTA變成了標準模式(CSS1Compat)在這種情況下,這應該使用:document.documentElement.offsetWidthdocument.documentElement.offsetHeight