質問

ブラウザの現在のWebページで発生したHTMLイベントをリッスンする、C#で記述されたBHO /ツールバーに取り組んでいます。このソリューションには、開かれた新しいWebページごとにHTMLイベントの特定のリストをサブスクライブすることを目的とする、HtmlPageEventManagerと呼ばれる再利用可能なクラスが含まれています。目標は、ページの読み込みが完了する前であっても、ユーザーがページ要素との対話を開始できるようになったらすぐにハンドラーをアタッチすることです。このクラスの使用は簡単です-コンストラクターを呼び出すだけです:

var evts = new List() {
    HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown,
    HtmlEvent.onselectstart, HtmlEvent.onselectionchange,
    HtmlEvent.onfocus, HtmlEvent.onselect
};
new HtmlPageEventManager( this, evts, this.HtmlEventHandler );

こちらからソリューションをダウンロードしてください試して、フィードバックを送ってください。便利だと思ったら、自分のプロジェクトで自由に使用してください。うまく機能しますが、イベントの添付に失敗する場合があります。これらの状況を正確に特定するのは困難でした。そのため、HtmlPageEventManagerの改善に役立つヘルプを使用できます。

私のソリューションは SpicIE のアセンブリを参照していますが、上記のダウンロードには含まれていません、 SpicIE Webサイトから取得する必要があります。ところで、これはおそらく質問するのに適した時間です。SpicIEはどのくらい人気がありますか?より良いツールはありますか?

役に立ちましたか?

解決

はい! 「更新」を克服しました。 BHOのDownloadCompleteイベントにサブスクライブすることにより、「RegisterEventHandlers」を再度呼び出します。 HTMLイベントハンドラーをアタッチするヘルパーメソッド。リンクされたコードjeffamaphoneは役に立ちました。 「normalPageLoad」というアイデアを取り入れました。 RegisterEventHandlersを条件付きで呼び出すためのメンバー変数。また、付属品フォーラム投稿。ただし、親ウィンドウのLoadedイベントの強調を理解することはできません。その部分を実行することなく、コードを動作させました。とにかく、HtmlPageEventManagerは完全に機能するようになりました。まだ仕事をしていないケースを見つけたら、私に一言お願いします。

他のヒント

ページの読み込み中にIEに対してこれを行うための100%の解決策はないことがわかります。それはあなたのせいではありません。IEのイベントモデルは、大量の非同期コードの大量の非同期コードであるため、正しく処理するのは非常に困難です。 95%の解決策があれば、喜んで先に進みましょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top