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

时间:2015-04-01 14:36:11

标签: javascript vba internet-explorer

我正在尝试在包含“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一起工作。谢谢你的任何建议!

1 个答案:

答案 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.querySelectorAlldocument.getElementsByTagName +循环,...)来获取对所需元素的引用。