VBA IE 调用包含 'this' 关键字的 javascript

VBA IE call a javascript containing 'this' keyword

我试图在包含 'this' 关键字的网页上调用 javascript 函数,该关键字指的是网页上的 <input> 文本框。该函数如下所示:

functiondostuff('hdnAttribute',this,'Key')

使用

js = "functiondostuff('hdnAttribute',this,'Key')"
Call IE.Document.parentWindow.execScript(js)

不会抛出错误,但不会产生函数的结果,因为无法识别 this

在函数为 运行 时逐步浏览网站 this = [object DispHTMLInputElement] 而不是元素名称。有人有什么想法吗?

早上好,

为这个问题添加更多内容。似乎有两个问题,第一个是设置window.event,functiondostuff以:if (window.event && window.event.keyCode == 13)开头,当调用该函数时由于事件为空而立即退出。有没有办法将事件作为 13 传递到网站?第二个问题是提交 "this" HTMLInputObject。

有人知道触发 'onkeypress' 事件的方法吗?我正在尝试使用 sendkeys 来避免调用该函数,但无法让它们与 IE 一起使用。感谢您的任何建议!

关键是上下文。如果你有这个 HTML

<input onclick="functiondostuff('hdnAttribute',this,'Key')">

然后浏览器可以从用户交互中推断上下文并为您正确设置 this

在 VBA 内部情况略有不同,您必须手动定义上下文。

这个怎么样:

Dim js As Variant

js = Array( _
    "var input = document.getElementById('yourElementsId');", _
    "functiondostuff('hdnAttribute',input,'Key');" _
)

Call IE.Document.parentWindow.execScript(Join(js, vbNewLine))

这样您就可以自己定义上下文。

document.getElementById 只是为了举例。如果您的元素没有 ID,请使用任何其他方法(如 DOM 遍历、document.querySelectorAlldocument.getElementsByTagName + 循环,...)来获取对所需元素的引用。