代码之家  ›  专栏  ›  技术社区  ›  George2

javascript中的event.clientx位置问题

  •  1
  • George2  · 技术社区  · 15 年前

    我正在从这个页面学习javascript示例,

    http://nofunc.org/AJAX_Star_Rating

    我对函数xy(e,v)中的以下代码片段感到困惑,尤其是这两个语句 event.clientX+document.documentElement.scrollLeft 和 event.clientY+document.documentElement.scrollTop 有人能告诉我是什么吗 document.documentElement.scrollLeft 和 document.documentElement.scrollTop ?为什么我们要把它添加到 event.clientX 和 event.clientY 请(也就是说,当我们将它们添加到 事件.clientx 和 事件.客户 )?

    顺便说一句:我正在使用Internet Explorer。

    事先谢谢, 乔治

    2 回复  |  直到 15 年前
        1
  •  5
  •   bmancini    15 年前

    clientX -获取或设置鼠标指针位置相对于窗口工作区的X坐标,不包括窗口装饰和滚动条。 http://msdn.microsoft.com/en-us/library/ms533567(VS.85).aspx

    scrollLeft -设置或检索对象左边缘与窗口中当前可见内容最左边部分之间的距离。 http://msdn.microsoft.com/en-us/library/ms534617(VS.85).aspx

    在外行,它在屏幕上获得鼠标位置(clientx和clienty),然后将该值添加到页面的当前滚动位置(ScrollLeft和ScrollTop),以获得该点的总像素位置。

    也就是说,如果您查看的页面向下滚动了200px,并且鼠标单击发生在客户端查看区域的200px处,则文档向下滚动了400px。

    编辑:

    “窗口的客户端区域”是指您看到/操作页面的Internet Explorer的显示区域。它从左上角的0px 0px开始,宽度/高度与浏览器窗口打开时相同(减去滚动条、框架、标题栏等)。

    在这个例子中,它试图通过计算您在浏览器的“可视区域”中单击的位置来获得事件在页面上的绝对位置,并将其添加到“可视区域”在页面上向下/向右滚动的程度。

        2
  •  1
  •   JM Humbert    15 年前

    在我的网站上使用这个脚本也有同样的问题 http://www.alterboutique.com

    我在这里找到了解决方案: www.experts-exchange.com/programming/languages/scripting/javascript/q_23310105.html网站

    在页面的底部,有一篇来自kravmir的文章,他给出了用代码替换函数xy的代码的解决方案:

    函数xy(e,v){ e=e window.event; var d=文档,de=d.documentElement,o; if(typeof(e.pagex)='数字') o='x':e.pagex,'y':e.pagey 其他的 o='x':e.clientx+d.body.scrollLeft+(de?de.scrollLeft:0),则 “y”:e.clienty+d.body.scrolltop+(de?de.滚动条:0); 返回(V?o[v]:o); }

    这对我很有用。

    祝你好运

    让-马克