我正在尝试在包含“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一起工作。谢谢你的任何建议!
答案 0 :(得分:0)
关键点是背景。如果你有这个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
+循环,...)来获取对所需元素的引用。