在因特网上搜索后,我找到了这些用于查找HTML元素实际位置的标准方法。事情是这样的:计算HTML元素的绝对位置不起作用
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
curleft = obj.offsetLeft
curtop = obj.offsetTop
while (obj = obj.offsetParent) {
curleft += obj.offsetLeft
curtop += obj.offsetTop
}
}
return [curleft,curtop];
}
,我用它来找到任何YouTube视频页面上的“喜欢”按钮的位置,这样我可以(使用的GreaseMonkey)插入我自己的“格”在那里。它适用于简单的Youtube版本,但不适用于它的cosmicpanda版本(youtube.com/cosmicpanda)。这种情况下,有人能帮助我知道为什么它不在那里工作?
-
谢谢
的Piyush
在你的代码中,只有'curleft'是一个局部变量。 'curtop'成为一个隐含的全局变量。做这个,而不是:'var curleft = 0,curtop = 0;' –
这可以帮助你:http://www.quirksmode.org/js/findpos.html – meo
quirksmode.org链接包含几乎相同的代码,已经写在上面。它可以工作,但只适用于简单版本的YouTube。他们做了一些设计更改,这不允许我获得正确的位置。我甚至尝试过使用getBoundingClientRect(),它以更快更简单的方式完成同样的事情,但结果相同。请有人使用上面的链接去youtube的cosmicpanda版本,并尝试说明为什么它不适用于Like按钮。 –