我正在编写一个脚本(在VBA中,如果这很重要)将数据输入到基于Web的系统中。一些系统的验证仅在一个字段被聚焦时运行,所以我一直在VBA中的字段上调用.Focus
来强制它运行。但这会抢走整个系统的焦点;如果我在工作正在运行时正在做其他事情,那就太烦人了。
我希望在不窃取焦点的情况下触发验证。所以我试图直接调用注册到输入字段的任何事件处理程序。
网络应用中的所有事件处理程序都添加了element.attachEvent()
,这意味着onfocus
和onblur
属性(我认为是我想要的属性)未设置。
有没有办法检索处理程序而不诉诸更多邪恶黑客?
或者,有没有更好的方法来做到这一点,而无需找到事件处理程序?我对JavaScript很陌生,所以我很容易遗漏一些东西。
修改:还有其他原因可能会被VBA代码窃取?我找不到.Focus
甚至AutoIt WinActivate
的任何其他引用,但即使有这些建议,问题仍然存在。
答案 0 :(得分:0)
除了整个VBA部分,您似乎引用了element
,因此您可以尝试调用element.focus()
或element.blur()
来分别触发焦点和模糊事件。
答案 1 :(得分:0)
看看这个post。
此功能应该为您激活事件:
function fireEvent(element,event){
if (document.createEventObject){
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on'+event,evt)
}
else{
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
您是否可以访问您正在与之交互的应用程序(以便能够添加此功能)?