環境: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へのフォーカスイン・アウトを検知する良い手段が分かる方おりましたら
、宜しくお願い致します。
> 関してはこれに相当するイベントが見付からないようです。
onfocusin / onfocusout イベントは使えないでしょうか。
このイベントはバブルアップしますので、document.onfocusout だけに
イベントクラスをSetしておけば、個々の要素のイベントの監視も省けますよ。
> IE :5.5以上
すみません、見落としてました…。m(_ _)m
onfocusin / onfocusout は、IE6以上が必要になります。
BODYタグの onblur イベントで拾えませんか?
onfocusin / onfocusout は確かに使えそうなのですが、
やはりIE5.5をしている端末も結構あり、まだ「IE6以上」とは
しづらい雰囲気です。
フレームを使用したページの場合、
一つのブラウザにBODYは複数存在するので、
(=同一ブラウザ内でのフレーム移動でも発生するはず)
HTMLエレメントのオブジェクトをwitheventsで宣言し、
トップレベルDocumentのHTMLエレメントのonblur検知でやってみようと思います。
お二方、助言をありがとうございました。
もし他に良い手段を発見したら、またここにレスを書き込もうと思います。
ツイート | ![]() |