VBScript调用JavaScript函数时变量传参报错80020101的解决方案咨询
问题分析与解决方案
首先,你遇到的错误80020101是IE的脚本语法错误,核心原因很明确:你通过execScript执行的JavaScript代码里引用的strValue是VBScript的变量,但JavaScript的执行上下文里并没有这个变量,JS引擎无法识别它,因此抛出了语法错误。而当你直接写10位数字时,JS能直接解析这个数字字面量,所以代码能正常运行。
解决方法
你需要把VBScript变量strValue的实际值嵌入到要执行的JavaScript代码字符串中,而不是直接写变量名。修改execScript的调用代码即可:
Dim strValue For Each ele1 In ie.document.getElementsByTagName("select")(1).Children ie.document.getElementsByTagName("select")(1).Value = ele1.Value strValue = ele1.Value ' 将VBS变量的值直接拼接进JS代码字符串 Call ie.Document.parentWindow.execScript("javascript:doCompletion(" & strValue & ", 1)", "javascript") Next ele1
为什么这样有效?
当VBScript执行这段代码时,它会把strValue的实际值(比如2644000000)替换到字符串中,最终传递给execScript的JavaScript代码变成:
doCompletion(2644000000, 1)
这和你手动把数字写进去的效果完全一致,JS引擎能正确解析这个数字字面量,自然就能正常执行doCompletion函数了。
额外注意事项
如果未来你的strValue变成字符串类型(比如包含非数字字符),记得要给值加上引号,避免JS语法错误:
Call ie.Document.parentWindow.execScript("javascript:doCompletion('" & strValue & "', 1)", "javascript")
这里用单引号包裹字符串值,确保JS能识别它为字符串字面量。
内容的提问来源于stack exchange,提问作者JongWon
相关产品推荐
相关产品推荐

