2016-08-05 11 views
0

私はTWebBrowserをDelphiで使用しています。 HTML要素をその位置で取得するには、助けが必要です。HTML要素を位置で取得する

必要な要素はフレーム内にあります。 elementFromPoint()の使用:

Document.elementFromPoint(X, Y) 

私はそれの内側にあるものフレーム自体を取得しますが、いません。

は、私はこれを使用して、それを取得しようとしました:

WebBrowser.OleObject.Document.Frames 

をしかし、フレームを転送するとき、これは私のアクセスエラーが発生します。

答えて

0

Document.elementFromPoint()を使用することが正しいアプローチです。考慮していないのは、HTMLが階層DOMツリーで解析され、elementFromPoint()が再帰的ではないということです。

直下の子であるの要素が文書内の指定されたX、Y座標にあることをブラウザのトップレベルの文書に要求しています。この場合、それはフレーム要素です。

フレームは、別のドキュメントを保持する埋め込みウィンドウです。フレームのドキュメントにアクセスし、フレーム内のターゲットX、Y座標の子要素を見つけるように要求する必要があります。あなたが最終的に一番下の子供に達するまで、そうすることなど。 elementFromPoint()はあなたが上elementFromPoint()を呼び出しているドキュメントの左上隅を基準にしていクライアント座標を取ること

注意。したがって、子フレームのドキュメントを検索する場合は、フレームのDocument上でelementFromPoint()を呼び出す前に、まずターゲットX、Y座標からフレームの左上のX、Y座標(親ドキュメント内)を減算する必要があります。

+0

フレームへのアクセス方法を教えてください。 'WebBrowser.OleObject.Document.Frames' これは動作しません。アクセスエラー。 – Alexey1245

+0

あなたはすでに 'elementFromPoint()'からフレームにアクセスしています。実際のフレーム要素を返します。 'Document.Frames'をまったく使う必要はありません。 –

+0

フレームから要素を取得するにはどうすればよいですか? 'frame:= browser.elementFromPoint(x、y); ... element:= frame.elementFromPoint(frame_x、frame_y); ' – Alexey1245

関連する問題