我有一个980大小的页面上面部署了一段JS用来采集点击位置
现在数据里有20%的坐标X位置溢出了,怎么回事?
比如我采集到的
sw      sh      x        y
1440 900 2302 1858
1024 768 1525 1347前面是分辨率,后面是采集到的点击位置什么情况下会出现这种情况?

解决方案 »

  1.   


    var IE=document.all?true:false;
    function clickStat(e)
    {
    var e = arguments[0] || window.event;     var src = e.srcElement || e.target; 
    if(src.tagName == "A"||src.tagName == "IMG"||src.tagName == "INPUT"||src.tagName == "SPAN") 
    {
    var Ypos = 0;
    if (IE)
    {
    var standardCompat = top.document.compatMode.toLowerCase();
    if (standardCompat == "css1compat")
    {
    Ypos = top.document.documentElement.scrollTop;
    }
    else if (standardCompat == "backcompat" || standardCompat == "quirksmode" )
    {
    Ypos = top.document.body.scrollTop;
    }
    tempX = top.event.clientX + top.document.body.scrollLeft
    tempY = top.event.clientY + Ypos;//top.document.body.scrollTop
    }
    else
    {
    tempX = e.pageX
    tempY = e.pageY
    }
    var src_str =  screen.width + "x" + screen.height + "x" + screen.colorDepth;
    src_str += "&x=" + tempX;
    src_str += "&y=" + tempY;
    src_str += "&url=" + encodeURIComponent(top.window.document.URL);
    src_str += "&ran=" + Math.random();
        objImage = new Image();
        objImage.src="http://clicksite.xxxx.com/www_click_statsbeauty.php?sc="+ src_str;
    return true;
    }
    }
      

  2.   

    你页面大小980,用户使用时打开的页面大小不会是就只980的,你触发事件是整个document吧
    你只采集是页面空容的的坐标就行了
      

  3.   

    你看我的代码
    if(src.tagName == "A"||src.tagName == "IMG"||src.tagName == "INPUT"||src.tagName == "SPAN") 
    我只负责监控这几个标签,所以他一定在我的980里面呀
      

  4.   

    按照你的算法来说溢出也是正常值啊!你要得到的是当前位置相对于文档的位置而不是相对于显示区域的位置,比如你屏幕高度768,文档高度1000,当你点击了相对于屏幕的top = 750,而你的页面现在是拉到最底端的时候,你的算法还要加上一个隐藏的高度是1000-768 = 232;最终得到的答案是982(数据因为浏览器不一样会稍微有点偏差),所以说这个数据是正常的啊如果lz本意就是取相对于整个网页顶部的高度的话。
      

  5.   

    是不是有滚动条,有滚动条的话取得貌似是整个页面的坐标,不只是window的坐标
      

  6.   

    不懂程序,有思路:
    既然有20%的坐标X位置溢出了,应该很容易采集到这些溢出。
    同时采集一下浏览器类型,看是哪种浏览器溢出。如果不是浏览器兼容问题,就再采集一下操作系统等其他相关数据!
    同样是IP8,在XP和win7系统下的显示是不一样的!
    实在不行像网站统计那样采集所有能采集到的用户数据,一定能顺利找到原因的!
      

  7.   

    打错了:
    同样是IE8,在XP和win7系统下的显示是不一样的!
      

  8.   

    还是CSS不兼容,超过你的预期宽度了。
    你在   if(src.tagName == "A"||src.tagName == "IMG"||src.tagName == "INPUT"||src.tagName == "SPAN")      {     var Ypos 
    里面把目标对象的实现宽高也输出一下,应该是超过你想像的宽度。CSS不兼容就是这样,不在你意料之外的话,就不叫不兼容了。
      

  9.   

    经过一系列测试,还是真实被缩放了,有些浏览器缩放了,分辨率不变,坐标变,就会出现这个问题现在还有一个问题,就是有很多y=0的采集点,理论上y=0也就是顶端呀,应该采集不到呀。
    不知道什么情况下会出现y=0