0

背景:

我正在编写一个脚本(在 VBA 中,如果重要的话)将数据输入到基于 Web 的系统中。某些系统的验证仅在关注某个字段时运行,因此我一直在调用.FocusVBA 中的字段以强制它运行。但这会窃取全系统的关注点;如果我在工作运行时做任何其他事情,那会很烦人。

我希望在不窃取焦点的情况下触发验证。所以我试图直接调用注册到输入字段的任何事件处理程序。

问题:

Web 应用程序中的所有事件处理程序都添加了element.attachEvent(),这意味着没有设置onfocusonblur属性(我相信这是我想要的)。
有没有办法在不诉诸更邪恶的黑客的情况下检索处理程序?

或者,有没有更好的方法来做到这一点而不必找到事件处理程序?我对 JavaScript 很陌生,所以我很容易遗漏一些东西。


编辑: VBA代码可能会窃取焦点是否还有其他原因?我找不到任何其他对.FocusAutoIt's 的引用WinActivate,但即使有这里的建议,问题仍然存在。

4

2 回答 2

0

除了整个 VBA 部分,您似乎对 an 有引用element,因此您可以尝试分别调用element.focus()element.blur()触发焦点和模糊事件。

于 2009-12-15T18:30:28.990 回答
0

看看这个帖子

此函数应该为您触发事件:

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);
    }
}

您是否有权访问正在与之交互的应用程序(以便能够添加此功能)?

于 2009-12-15T18:30:29.533 回答