我正在从这个页面学习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
请(即将它们添加到event.clientX
和event.clientY
时我们可以获得哪些有意义的值?)
BTW:我正在使用Internet Explorer。
提前谢谢, 乔治答案 0 :(得分:5)
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开始,与浏览器窗口打开时一样宽/高(减去滚动条,框架,标题栏等)。
在示例中,它试图通过计算您点击的浏览器的“可查看区域”中的位置并将其添加到“可查看区域的向下/向右”的位置来获取页面上事件的绝对位置“已滚动页面。
答案 1 :(得分:1)
我在我的网站http://www.alterboutique.com
上使用此脚本时遇到了同样的问题我在这里找到了解决方案: www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_23310105.html
在页面底部,有一篇来自Kravimir的帖子,他通过他的代码给出了替换函数XY代码的解决方案:
函数XY(e,v){ E = ||Ëwindow.event; var d = document,dE = d.documentElement,o; 如果(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.scrollTop:0)}; 返回(V问题o [v]的:○); }
它对我有用。
祝你好运让马克