1

有没有办法确定ActiveXObjectJScript 中变量的类型?VBScript 具有该TypeName功能,但我无法在 JScript 中找到合适的对应项。我熟悉typeofandinstanceof运算符,但没有一个返回对象特定数据。

我询问这个​​的原因是为了一个工作项目。如果可能,我需要避免使用 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>
4

0 回答 0