0

バックグラウンド:

Web ベースのシステムにデータを入力するためのスクリプトを (VBA で) 書いています。.Focusシステムの検証の一部は、フィールドがフォーカスされている場合にのみ実行されるため、強制的に実行するように VBA でフィールドを呼び出してきました。しかし、それはシステム全体の焦点を奪います。ジョブの実行中に何か他のことをしていると、かなり面倒です。

フォーカスを盗むことなく検証をトリガーしたい。そのため、入力フィールドに登録されているイベントハンドラーを直接呼び出そうとしています。

問題:

Web アプリのすべてのイベント ハンドラーは で追加されますelement.attachEvent()。これは、onfocusonblurプロパティ (私が必要としていると思われるもの) が設定されていないことを意味します。
さらに邪悪なハックに頼ることなくハンドラーを取得する方法はありますか?

または、イベント ハンドラーを見つけなくてもこれを行うためのより良い方法はありますか? 私は JavaScript にかなり慣れていないので、簡単に何かを見落としている可能性があります。


編集: VBAコードによってフォーカスが盗まれる可能性がある他の理由はありますか? .FocusAutoIt への他の参照や AutoIt の参照も見つかりませんがWinActivate、ここでの提案を使用しても、問題は引き続き発生します。

4

2 に答える 2

0

VBA の部分全体は別として、 への参照があるように見えるので、フォーカス イベントとブラー イベントをそれぞれ呼び出すかトリガーする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 に答える