有没有办法确定ActiveXObject
JScript 中变量的类型?VBScript 具有该TypeName
功能,但我无法在 JScript 中找到合适的对应项。我熟悉typeof
andinstanceof
运算符,但没有一个返回对象特定数据。
我询问这个的原因是为了一个工作项目。如果可能,我需要避免使用 VBScript。以下是一些我不能偏离的项目要求:
- JScript 代码将成为 HTA 的一部分。
- HTA 将由 Internet Explorer 8 托管。
- 所有计算机都将运行 Windows 7(32 位)。
我能用 JScript 得到的最接近的是真/假值:
var Regex = new ActiveXObject('VBScript.RegExp');
Regex instanceof ActiveXObject; // Returns true
但是,对于 VBScript,该TypeName
函数返回对象接口名称:
Dim Regex
Set Regex = CreateObject("VBScript.RegExp")
TypeName(Regex) ' Returns IRegExp2
这是我为测试之前的结果而制作的完整 HTA:
JSTesting.hta
<!DOCTYPE html>
<HTML>
<HEAD>
<TITLE>JScript Testing</TITLE>
<META http-equiv='X-UA-Compatible' content='IE=8' />
<SCRIPT language='JScript'>
new function () {
var width = 350, height = 120;
var left = (screen.availWidth - width) / 2;
var top = (screen.availHeight - height) / 2;
resizeTo(width, height); moveTo(left, top);
}
window.onload = function () {
var regex = new ActiveXObject('VBScript.RegExp');
jstest.onclick = vbstest.onclick = function () {
var id = event.srcElement.id;
var TypeName = (id === 'jstest') ? JSTypeTest : VBSProc;
output.innerText = TypeName(regex);
};
};
function JSTypeTest(obj) {
return (obj instanceof ActiveXObject) ?
'ActiveXObject' : 'UnknownObject';
}
</SCRIPT>
<SCRIPT language='VBScript'>
Dim VBSProc
Set VBSProc = GetRef("VBSTypeTest")
Function VBSTypeTest(obj)
VBSTypeTest = TypeName(obj)
End Function
</SCRIPT>
<STYLE type='text/css'>
span {
margin-top: 10px;
font: 10pt courier new;
}
</STYLE>
</HEAD>
<BODY>
<BUTTON id='jstest'>JScript</BUTTON>
<BUTTON id='vbstest'>VBScript</BUTTON>
<HR>
<SPAN>VBScript.RegExp object = </SPAN>
<SPAN id='output'></SPAN>
</BODY>
</HTML>