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.querySelectorAll
、document.getElementsByTagName
+ 循环,...)来获取对所需元素的引用。
我试图在包含 '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.querySelectorAll
、document.getElementsByTagName
+ 循环,...)来获取对所需元素的引用。