2012-04-26 22 views
0

私は、.netのwebbrowserコントロールでhtml要素の位置を取得しようとしていますが、失敗します。 要素全体の正確な位置が必要です。 ..c#/ vb.net webbrowser htmlelementの位置を取得

をSendMessage関数を使用して、マウスのクリック()P /呼び出しを送信することができ、私はここから解決策を試してみましたが、それはうまくいきませんでした: getting absolute position of HTML element in webbrowser control with C#

私はページが非常に依存しているので、それがある推測しています複雑なajaxとcss。

関数 "WebBrowser1.Document.GetElementFromPoint()"は、正確なhtml要素を取得するうえで問題なく動作しますが、その逆が必要です。

他の賢明なのは、正しい要素を取得するまでGetElementFromPoint()を使用して検索し続けるだけですか?

ありがとうございました。クリックすると間違っている私はあなたの質問にコメントすることができませんように、私はそれが1の多くではありませんにもかかわらず、「答え」を作るために行くよ

答えて

0

...

  • JavaScript経由で要素/ InvokeMethod
  • 要素のCSSを変更して、ビューポート全体を にすることもできます。これにより、Web内の任意の場所をクリックすることができます。 ブラウザコントロールのビューポート。

あなたがあなたのリンクからソリューションが動作することができませんでした理由を投稿した場合、あなたの問題への解決策を与えることが可能 容易になるだろう。

0

あなたは、単にこのような何かを行うことによって、同じ正確な動作を得ることができます:

public void ClickHtmlElement(WebBrowser o, string htmlElementId) 
{ 
    const string mask = @"javascript:void(document.getElementById('{0}').click())"; 
    string url = string.Format(mask, htmlElementId); 
    o.Navigate(url); 
} 
0

私はこれと同じ問題を持っています。 .domelement.click()、.clickなど...は動作しません。sendmessageは動作しますが、これには正確なX、Yの位置が必要です。

私の唯一の解決策は、恐ろしいことです。基本的にGetElementFromPoint()を使用しますが、ポイントごとに移動する代わりに、要素の幅と高さのステップを使用できます。

は、だからあなたの要素が高い500個のピクセルと500個のピクセル幅であるならば、あなたは、私はそれが実際に取得することがいかに複雑で示し、いくつかのjQueryコードを見つけたなどの点0,500,1000,1500

を検索することができます正しいX、Yの位置:

https://github.com/jquery/jquery/blob/master/src/offset.js

私は

:-(もっと簡単な方法がないと信じることができません
関連する問題