我不得不在IE10中调试一些vbscript。该脚本启动了微软远程桌面ActiveX控件,并且完全可以使用IE9。在IE10(非兼容模式)中,它会抛出错误“对象不支持此属性或方法:'Document.getElementById'”
代码的相关部分是
sub OnControlLoad
set Control = Document.getElementById("MsRdpClient")
if Not Control is Nothing then
if Control.readyState = 4 then
Document.all.connectButton.disabled = FALSE
end if
end if
end sub
并且id为MsRdpClient的对象是
<OBJECT language="vbscript" ID="MsRdpClient"
onreadystatechange="OnControlLoad"
CLASSID="CLSID:9059f30f-4eb1-4bd2-9fdc-36f43a218f4a"
CODEBASE="msrdp.cab#version=5,1,2600,1095"
WIDTH=800
HEIGHT=600>
</OBJECT>
我已经测试了一些非常简单的脚本,例如
<script language="VbScript">
Function btnCheck_OnClick()
MsgBox ("test")
MsgBox (Document.getElementById("txtName").Value)
End Function
</script>
<form name="form1" method="post" action="">
<input type="text" name="txtName" id="txtName" value="TEST">
<input type="button" name="btnCheck" value="GetValue">
</form>
并且这会在IE10非兼容模式下抛出相同的错误(Object不支持此属性或方法:'Document.getElementById'),但在IE10兼容模式和IE9中工作正常。有没有人知道为什么vbscript中的文档对象没有getElementByID方法可用,更重要的是,如何绕过它?