按位置获取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()
之前。
我在 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()
之前。