IEへのフォーカスイン・アウトを検知するには?

解決


GOMA  2004-12-08 20:56:21  No: 87244

環境:Windows2000(SP4)
言語:VB6.0(SP6)
IE  :5.5以上

いつもお世話になっています。

Webの操作記録・再生アプリケーションを作成しており、

(General)
Private WithEvents objIE As SHDocVw.WebBrowser 

(プロシジャA)
Set objIE = CreateObject("InternetExplorer.Application")

などとしてIEのイベント(URL変更など)を検知しています。
(その他、Documentオブジェクトも同様にイベント検知しWebのコントロール(=Element)
  への操作を記録しています)

ここで一つ質問です。
IEから別のウィンドウへフォーカスが移動した場合、
その事を検知したいのですが、良い手段はないでしょうか。

例えば
コントロール(=Element)単位でのフォーカス解除は各Elementのonblurイベントで
同じIE内・IE外関わらずフォーカス解除を検知できますが、IE及びDocumentオブジェクトに
関してはこれに相当するイベントが見付からないようです。

今の自分の認識として
・フォーカス移動(つまりイベント)を検知するにはWithEventsで対象と同じ型のオブジェクトを
  宣言し、そこへSETしておく必要がある。
・WebBrowserやDocumentオブジェクトにはonblur相当のイベントは無い。
ですが、勘違いがあったらご指摘願います。

そして、IEへのフォーカスイン・アウトを検知する良い手段が分かる方おりましたら
、宜しくお願い致します。


魔界の仮面弁士  2004-12-08 21:36:02  No: 87245

> 関してはこれに相当するイベントが見付からないようです。

onfocusin / onfocusout イベントは使えないでしょうか。

このイベントはバブルアップしますので、document.onfocusout だけに
イベントクラスをSetしておけば、個々の要素のイベントの監視も省けますよ。


魔界の仮面弁士  2004-12-08 21:36:57  No: 87246

> IE  :5.5以上
すみません、見落としてました…。m(_ _)m

onfocusin / onfocusout は、IE6以上が必要になります。


ひろ  2004-12-10 06:39:03  No: 87247

BODYタグの onblur イベントで拾えませんか?


GOMA  2004-12-10 20:17:38  No: 87248

onfocusin / onfocusout は確かに使えそうなのですが、
やはりIE5.5をしている端末も結構あり、まだ「IE6以上」とは
しづらい雰囲気です。

フレームを使用したページの場合、
一つのブラウザにBODYは複数存在するので、
(=同一ブラウザ内でのフレーム移動でも発生するはず)
HTMLエレメントのオブジェクトをwitheventsで宣言し、
トップレベルDocumentのHTMLエレメントのonblur検知でやってみようと思います。

お二方、助言をありがとうございました。
もし他に良い手段を発見したら、またここにレスを書き込もうと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加