2012-04-26 98 views
0

我想要获取html元素在.net的webbrowser控件中的位置,并且失败, 我需要元素相对于整个文档或webbrowser控件的确切位置能够发送使用的SendMessage()的P/Invoke鼠标点击..c#/ vb.net webbrowser获取htmlelement位置

我试图解决从这里,但它没有工作: getting absolute position of HTML element in webbrowser control with C#

我猜测是因为页面依赖于非常复杂的ajax和css。

函数“WebBrowser1.Document.GetElementFromPoint()”在获得准确的html元素方面工作得很好,我只需要它的反面。

其他明智的,我应该继续使用“GetElementFromPoint()”搜索,直到获得正确的元素?

谢谢。

回答

0

由于我无法对你的问题发表意见,我会去制作的“答案”,即使它不会有太大的一...

  • 这有什么错点击元素通过JavaScript/InvokeMethod
  • 您也可以修改元素的CSS,使其覆盖整个视口,允许您单击浏览器控件的视口中的任意位置。

如果你要发布的原因,从你的链接的解决方案是无法工作,那么这将是 容易 可能给你一个解决问题的办法。

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

我有这个确切的同样的问题。 Invoke,.domelement.click(),.click等...不起作用,sendmessage确实有效,但这需要确切的X,Y位置。

我现在唯一的解决方案是可怕的。基本上使用GetElementFromPoint(),但不是一点一滴地去,你可以使用元素的宽度和高度的一个步骤。

所以,如果你的元素是宽500个像素高,500个像素,那么你就可以搜索点0,500,1000,1500等

我发现一些jQuery代码,显示它实际上是多么复杂获得正确的X,Y位置:

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

我不能相信没有:-(

一个更简单的方法