IHTMLElement2.getBoundingClientRect() 无法正常工作
getBoundingClientRect() 并非在所有情况下都能准确工作。当假设链接列表并排排成一行并且其中一半被推到下一行时,它会失败,因为所有链接无法放入同一行。现在,对于第二行的第一个链接, getBoundingClientRect() 不会给出正确的结果。
IHTMLRect.bottom 和 IHTMLRect.right 的值是正确的,但 IHTMLRect.left 和 IHTMLRect.top 的值对应于第一行中的第一个元素。
如何获取第二行第一个链接的确切坐标?
这种情况发生在谷歌页面或维基百科页面上,那里有一堆语言或位置链接。
例如,维基百科中的链接
Deutsch • English • Español • Esperanto • Français • Bahasa Indonesia • Italiano •
由于布局的原因会出现在如下两行中。
Deutsch • English • Español • Esperanto •
Français • Bahasa Indonesia • Italiano •
在这种情况下,IHTMLElement2.getBoundingClientRect() 可以完美地处理除 Français 之外的所有内容。
我不确定为什么会发生这种情况,非常感谢针对此问题的任何帮助或解决方法。
The getBoundingClientRect() does not work accurately for all cases. It fails when say a list of links that are side by side in a row and half of them are pushed to the next line because all the links cannot be fit into the same line. Now for the first link at the 2nd line the getBoundingClientRect() does not give correct results.
The value for IHTMLRect.bottom and IHTMLRect.right is correct, however the value for IHTMLRect.left and IHTMLRect.top corresponds to the first element in the first row.
How to get the exact coordinates for the first link in the second row?
This happens on say the google page or on the wikipedia page where there are bunch of language or location links.
For example, Links in the widipedia say,
Deutsch • English • Español • Esperanto • Français • Bahasa Indonesia • Italiano •
would be present in two lines like below because of layout.
Deutsch • English • Español • Esperanto •
Français • Bahasa Indonesia • Italiano •
For this case the IHTMLElement2.getBoundingClientRect() works perfectly for everything except for Français.
I am not sure why this is happening, Any help or workaround for this problem is greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当我尝试 IHTMLElement2.getClientRects() 时。它逐行提供元素内部内容的矩形。所以解决这个问题就变得很棘手。
When I tried IHTMLElement2.getClientRects(). It provides the rectangles for inner contents of an element line by line. So this gets tricky to solve the problem.