搜狗 getElementById BUG

最近在查看用户提交信息发现很多 undefined 的内容

仔细检查 JS AJAX提交部分又没发现什么问题,郁闷至极.

通过分析用户数据发现出问题的用户都有一个共通点——使用搜狗浏览器

下载了一个一试,果然 undefined 重现。

但其他浏览器中都没有任何问题,甚至连极其恶心的IE6也很听话,为什么搜狗就这么不给力呢?

在纠结很久后终于发现了问题所在:

在搜狗中在取一个dom对象时使用

document.getElementById('test');

时,它并不会只找 "id"属性为"test"的dom对象。而是在"name"属性和"id"属性都去寻找,也就是说它把"name"和"id"属性等同处理为"id"了。

如果页面中有"id"为"test"和"name"为"test"的两个不同dom对象,那么它会返回第一个找到的对象(源码中先出现的)。

例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form>
  <a name="test" href="javascript:void(0)">这是个链接</a>
  <input id="test" type="text" value="测试文本" />
</form>
</body>
</html>
<script type="text/javascript">
obj=document.getElementById('test');  
alert(obj.value);
</script>


说实话,这问题真是坑爹啊。足足浪费我一下午时间。

在这里鄙视下搜狗浏览器。



后续:

如果不遵循XHTML,所有使用IE核的浏览器都会出这个问题;

遵循XHTML,除了搜狗,就连蛋疼的360啦、IE6啦都是很听话的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值