按位置获取HTML个元素

Get HTML element by position

我在 Delphi 中使用 TWebBrowser。 我需要帮助才能根据位置获取 HTML 元素。

我需要的元素在一个框架中。使用 elementFromPoint():

Document.elementFromPoint(X, Y)

我得到的是相框本身,但不是里面的东西。

我试着用这个得到它:

WebBrowser.OleObject.Document.Frames

但这让我在传输帧时出现访问错误。

使用Document.elementFromPoint()是正确的做法。您没有考虑到的是 HTML 是在分层 DOM 树中解析的,并且 elementFromPoint() 不是递归的。

您要求浏览器的 top-level 文档在文档中给定的 X,Y 坐标处找到 一个直接的 child 元素。在本例中,它是一个框架元素。

框架是嵌入的 window,它包含另一个文档。您需要访问框架的文档并要求它在框架内的目标 X、Y 坐标处找到 child 元素。以此类推,以此类推,直到最终到达 bottom-most child.

请注意,elementFromPoint() 采用 client 坐标,该坐标相对于您调用 elementFromPoint() 的文档的 top-left 角。所以,当你想搜索一个 child 框架的文档时,你需要先从目标 X,Y 坐标中减去框架自己的 top-left X,Y 坐标(在它的 parent 文档中)在框架的文档上调用 elementFromPoint() 之前。