Firefox获取隐藏表单元素的parent节点的Bug

Lillian ·
更新时间:2024-09-20
· 563 次阅读

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,可能比较难改,简单说是点击旁边后,选择框不会关..选择时候的鼠标状态问题,火狐好像不会变选择手势呢



parent 单元 firefox 表单

需要 登录 后方可回复, 如果你还没有账号请 注册新账号