firefox不支持document.all的解决方法

/***************************by garcon1986********************************/

 

参考部分:

由于 firefox 不支持 document.all 引发的问题(及解决)

下午帮技术查一个问题 算是很严重的大问题

症状:
服务器不停接收undefined请求
大体看了一下 几乎都是来自Firefox的
很自然就想到javascript的事了

而一般javascript容易犯的错误是容错性判断不够
结合考虑浏览器 兼容性支持不够
不过一般的js错误不会产生请求
如今 AJAX 的概念很火爆 (几年前的提法叫无刷新技术)
这里遇到的是用 document.idname.src= 设置页面的小技巧
也算是 AJAX 吧

解决:
回到这个问题
追了一下
原因倒也很简单
一个 IMG 的 src 是 'java script:preloadPic()'

而不幸的是 preloadPic 直接用了 document.all 了
function preloadPic() {
document.imgInit.src=imgUrl[0];
if (document.all) {
......
} else {
theTimer = setTimeout("preloadPic()",50);
}
}

就是 if (document.all) 这个馒头引发了一场问题

Firefox 不支持 document.all
显然这里一直执行 else 那块 也就是递归调用每0.05s来调用自己
执行起来就是每0.05s document.imgInit.src 会被设置一次不存在的URL(undefined)

于是 问题就发生了
服务器端无穷无尽的接收 http://域名/undefined 请求
(以下省略784字)

解决也很简单 不用document.all就行了
那么用什么呢? 如下:
getElementsByTagName("*") 可以得到得到所有元素的集合
getElemntById 可以按id得到某一元素
getElementsByName 可以得到按name属性得到某一元素


我的解决:


代码中使用到:

eid=document.all.select1.value; 


将其替换成:

eid=document.getElementById('select1').value; 即可。

另外,siteid=document.myform.select2.value; 可替 换成为:siteid=document.getElementById('select2').value; (两种方法均可)。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值