JavaScript/VBA 自动化 : Changing the onclick attribute

标签 javascript internet-explorer vba automation browser-automation

我正在尝试使用 VBA 中的自动化更改窗体上按钮的 onclick 事件的函数调用。函数 X 已经硬编码到网页中,我无权更改该代码。 (该页面是我公司内部的,但我不在那个部门)。

当我的场景适合时,我想用新函数 Y 替换函数 X

我似乎与这个 SO 有类似的问题,但它似乎最指的是从 JS 代码中更改元素属性。我的问题是我需要在 VBA 中这样做,但我不确定如何到达那里。

This site有大量关于此过程的信息(setAttributegetAttribute 等),包括有用的信息:使用一种浏览器与另一种浏览器时的注意事项。 我的所有代码都将与 IE(公司提供的)交互,因此无需担心其他浏览器选项。

尝试更改 onclick 属性时,VBE 监视面板显示属性发生了变化,但它的行为与预期不符。更改属性后,单击时什么也没有发生(通过 objButton.Click/objButton.onclick 的自动化,或者手动单击按钮)。我还在其他属性(即 onfocus)上进行了尝试,结果相同。上面的链接提到 IE 在这方面有一些困难,但我对 JavaScript 不是很熟悉,我在遵循指南时遇到了麻烦。

我试过的是下面的,所有这些都有相同的结果。

选项 1:

Set TEST = myIEWindow.Document.createattribute("onclick")
TEST.nodevalue = "function anonymous() {alert(""test""); };"
objButton.setAttributeNode TEST

选项 2:

objButton.Attributes("onclick").value = "function anonymous() {alert(""test""); };"

选项 3:

objButton.Attributes("onclick").value = "alert(""test"");"

选项 4:

objButton.setAttribute "onclick", "alert(""test"");"

选项 5:

objButton.onclick = "function() { alert(""test""); };"

在尝试这些不同的方法时,我确实注意到 VBE 监 window 口中的 onclick 属性 type 从其原始类型 Variant/Object 更改为 Variant/String在尝试强制按钮调用新功能后,我觉得这与我的问题有关。

有人可以解释一下(如果可能的话)我如何让它工作吗?

最佳答案

您可以直接在元素属性上更改它。

var objButton = document.getElementById("buttonId");
objButton.onclick = function() { alert("test"); };

关于JavaScript/VBA 自动化 : Changing the onclick attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845049/

相关文章:

javascript - knockout 双向绑定(bind)到对象

javascript - React Native Component Will Mount 重复调用

javascript - Angular JS 应用程序 ng-href 兼容 Web 和 Phonegap/Cordova

javascript - 转换 jQuery 插件以支持多个实例

javascript - 在 Internet Explorer Mobile 6 中播放声音

css - 为什么 IE 能正确解析长度为 4 而不是 3 的文本阴影?

excel - 如何在vba上输入用户决定的变量值?

css - 如何使用 w3c 盒模型渲染所有 IE 版本?

excel - 页面设置宏未对工作表进行所有更改

process - 宏完成后 Excel.exe 保留在内存中