我们不能在函数外使用在函数中创建的 COM 对象吗?
strHTML := "<html><body>foobar</body></html>"
oNode := GetNode(strHTML, "body", 0)
msgbox % oNode.innerText
GetNode(strHTML, strNode, nIndex) {
doc := ComObjCreate("HTMLfile")
doc.write(strHTML)
return doc.getElementsByTagName(strNode)[nIndex]
}
错误:0x80070005 - 访问被拒绝。
具体来说:innerText
Line# 001: strHTML := "foobar" 002: oNode := GetNode(strHTML, "body", 0) ---> 003: MsgBox,oNode.innerText 005: { 006: doc := ComObjCreate("HTMLfile") 007: doc.write(strHTML) 008: 返回,doc.getElementsByTagName(strNode)[nIndex] 009: } 010: 退出 011: 退出
全局变量和 byref 参数都没有帮助。
@SouthStExit 这不起作用,因此将其包装在函数中变得毫无意义。但是正如 Lexikos 提到的,我现在看到该对象被破坏了,因此它变得无法访问。
oNode1 := GetNode("<html><body>foo</body></html>", "body", 0)
oNode2 := GetNode("<html><body><div>bar</div></body></html>", "div", 0)
msgbox % oNode1.innerText "`n" oNode2.innerText
GetNode(strHTML, strNode, nIndex) {
global doc
doc := ComObjCreate("HTMLfile")
doc.write(strHTML)
return doc.getElementsByTagName(strNode)[nIndex]
}