码迷,mamicode.com
首页 > 其他好文 > 详细

[13年迁移]firefox获取隐藏表单元素的parent节点的bug

时间:2014-10-04 22:48:07      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:style   io   使用   ar   java   sp   div   问题   c   

getXY : function(element){
        var y = element.offsetTop;
        var x = element.offsetLeft;
        while(element = element.offsetParent){
            y += element.offsetTop;
            x += element.offsetLeft;
        }
        return (new Array(x,y));
    }
貌似是这个问题,递归代码在火狐下好像有问题,要打桩测一下(不打桩了,有log输出就容易了)
getXY : function(element){
        var y = element.offsetTop;
        var x = element.offsetLeft;
        var i=0;
        while(element = element.offsetParent){
            y += element.offsetTop;
            x += element.offsetLeft;
            i++;
        }
        //firefox debug
        console.log(i);
            console.log(y);
        console.log(x);
        return (new Array(x,y));
    }
在ie9下为4 120 100,正常
火狐为0 0 0,看来只要换个递归的写法就行了,
但是这个问题的原因要查清楚,项目里有这种风格写法的人,可能对于火狐的解析器来说
while(element = element.offsetParent)估计一开始就等于false啊..具体测试下
具体文章javascript的互等性,要补一下了.
火狐下element.offsetParent一开始就等于null
还是要去打桩,bug无法确定了,有可能是递归写法问题,又可能是前面传的element对象不对
还是不用打桩,调试时的一个报错,说明火狐解析器对判断条件里的element = element.offsetParent的理解是正确的.
前面的传参不对,or火狐对offsetParent的属性理解不对(如果加悬浮布局,那么火狐下是直接父节点直接对应body的,然后当然是null,记得是),没有使用危险的css属性,应该不会有问题的啊,
getXY : function(element){
        var y = element.offsetTop;
        var x = element.offsetLeft;
        var i=0;
        if(!element.offsetParent)
            console.log("null");
        console.log(element.id);
        while(element = element.offsetParent){
            y += element.offsetTop;
            x += element.offsetLeft;
            i++;
        }
        //firefox debug
        console.log(i);
        console.log(y);
        console.log(x);
        return (new Array(x,y));
    }
传参正确,获得的id和在ie下一样,不过应该没有并没有该id对应的对象在页面中存在,不过ie能理解,这个火狐也是认得,但是貌似这个parent对象火狐处理得和ie不同(直接为空,ie正常)
差点以为有又有什么我不知道的写法,xx_xx什么的可以直接一起获取,当然不可能啊,草,怪怪的语言,随时提心吊胆的
是 获取一个隐藏的input对象的父节点问题,导致常用的递归获取元素绝对坐标方法的递归失败.在firefox下,隐藏表单字段估计直接对应body节点 (猜的),那么就是为空(或者直接就是对象属性封装的问题,反正是bug),估计就是这个问题了,稍微修改后BUG被clear(在getXY里用固有结 构,把对象指向日期框后解决)
offsetParent这个属性是个level0的属性,实现各异
而jq中的>可以跳来跳去,会不会也有这个bug呢?还是jq处理了这个BUG,等有时间再去测试吧

接下来就是一些css问题,和修复原控件的select的fous问题,还是尽量不要用input这玩意在ie6下并不好,xinput控件调用又太麻烦了

基于先前研究,进销存模块使用的透明图片加div颜色属性实现的皮肤效果,可以进行日期控件在保证其他位置引用兼容性的前提下,进行和进销存模块独有的表单皮肤系统整合

在前辈的指导下修改了getYear(),getFullYear(),火狐是不支持 getYear()的,一开始我还以为那个控件一直是从Const里获得年月日的,其实是外部调用时传个date()对象?有时又在控件里建date()对象,当初可能是想做什么吧,中途可能放弃了,那Const里那个年月日是干嘛的,要好好看看去

发现火狐失去焦点事件的bug,可能比较难改,简单说就是点击旁边后,选择框不会关..选择时候的鼠标状态问题,火狐好像不会变选择手势呢






[13年迁移]firefox获取隐藏表单元素的parent节点的bug

标签:style   io   使用   ar   java   sp   div   问题   c   

原文地址:http://www.cnblogs.com/mikueye/p/4006360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!