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


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

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-08 21:16:46

Firefox获取隐藏表单元素的parent节点的Bug的相关文章

jquery 获取表单元素里面的值示例代码

本文为大家详细介绍下通过jquery获取表单元素CheckBox.Radio等的值,有需求的朋友可以参考下,希望对大家有所帮助   jquery 笔记: 复制代码 代码如下: $("input[name='radio_name']:checked").val() <input type="radio" value="1" name="radio_name" />1 <input type="radi

javascript获取form里的表单元素的示例代码

 本篇文章主要是对javascript获取form里的表单元素的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 //获取form对象   var form=document.getElementById('my_form');   //用户名input对象 user_name是对象的name属性   var userName=form.user_name;   //用户名清空   userName.value='';   //用户密码input对象 password是对象的na

jQuery获取和设置表单元素的方法

 本篇文章主要对jQuery获取和设置表单元素的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 jQuery提供了val()方法,使用它我们可以快速地获取和设置表单的文本框.单选按钮.以及单选按钮的值. 使用val()不带参数,表示获取元素的值 使用val()给定参数,则表示把值赋给元素   如下:     代码如下: //获取值 alert($("input#mytextbox").val()); alert($("select#mylist").v

jquery获取元素值的方法(常见的表单元素)_jquery

jquery radio取值,checkbox取值,select取值,radio选中,checkbox选中,select选中,及其相关 获取一组radio被选中项的值 var item = $('input[name=items][checked]').val(); 获取select被选中项的文本 var item = $("select[name=items] option[selected]").text(); select下拉框的第二个元素为当前选中值 $('#select_id

Ajax中通过JS代码自动获取表单元素值的示例代码_AJAX相关

我们在使用Ajax的时候,通常需要获取表单元素值,然后发送给后台的服务器端程序处理.如果表单元素不多的情况我们常常会通过GET方式来获取表单元素值,但如果表单元素非常多,此时就需要用POST方式来获取表单元素值,那么如何来获取表单元素值呢?下面给出一段JS代码即可自动获取表单元素的值了. function getFormQueryString(frmID) //frmID是表单的ID号,请在表单form中先命名一个ID号 { var frmID=document.getElementById(f

jquery获取form表单input元素值的简单实例_jquery

一般取值方法 $("#id").val(); $("#id").attr("value");  //其中value是元素的属性名如<s:textfield  id="cifName" key="cifName"   name="#request.consBean.cifName" />的id,key,name属性.取到的值是属性后对应双引号里面的字符. function sa

jquery 获取表单元素里面的值示例代码_jquery

jquery 笔记: 复制代码 代码如下: $("input[name='radio_name']:checked").val() <input type="radio" value="1" name="radio_name" />1 <input type="radio" value="2" name="radio_name" />2 <

php通过隐藏表单控件获取到前两个页面的url_php技巧

自己在学习过程中也遇到了类似的问题: 比如,后台是想做成这样子的: 但是实际则是这样的: 解决方法: 通过隐藏表单控件 <input type="hidden" name="prevurl" value="<?php echo $_SERVER['HTTP_REFERER']?>"> 这样$_SERVER['HTTP_REFERER']的值看上去就暂时存到了$_POST[prevurl]里. 其实这个方法的原理还是把上一个

Ajax中通过JS代码自动获取表单元素值的示例代码

我们在使用Ajax的时候,通常需要获取表单元素值,然后发送给后台的服务器端程序处理.如果表单元素不多的情况我们常常会通过GET方式来获取表单元素值,但如果表单元素非常多,此时就需要用POST方式来获取表单元素值,那么如何来获取表单元素值呢?下面给出一段JS代码即可自动获取表单元素的值了. function getFormQueryString(frmID) //frmID是表单的ID号,请在表单form中先命名一个ID号 { var frmID=document.getElementById(f