如果使用attachEvent添加onfocus事件处理程序,我该如何访问它?

时间:2009-12-15 18:25:20

标签: javascript events vba handler

背景

我正在编写一个脚本(在VBA中,如果这很重要)将数据输入到基于Web的系统中。一些系统的验证仅在一个字段被聚焦时运行,所以我一直在VBA中的字段上调用.Focus来强制它运行。但这会抢走整个系统的焦点;如果我在工作正在运行时正在做其他事情,那就太烦人了。

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

问题:

网络应用中的所有事件处理程序都添加了element.attachEvent(),这意味着onfocusonblur属性(我认为是我想要的属性)未设置。
有没有办法检索处理程序而不诉诸更多邪恶黑客?

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


修改:还有其他原因可能会被VBA代码窃取?我找不到.Focus甚至AutoIt WinActivate的任何其他引用,但即使有这些建议,问题仍然存在。

2 个答案:

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

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