您的位置:首页 > 其它

两个问题:ie+ajax 和 ie+getElementsbyname

2011-02-14 13:51 260 查看
原文地址:http://blog.thesharpmind.com/?p=11001

第一个问题不能说是ie的错,只能说ie与其他浏览器的设计思路不同而已。ie追求的是大而全,ff和chrome更加具有开源软件的小而精的特点。在对于ajax的兼容上就可以看出来,ie希望代替开发者把xmlhttp请求的缓存工作给完成了,于是很多人写的ajax代码在ff可以正常运行而在ie就有问题。这主要就是ie的缓存在捣鬼。

解决办法有两个:

1:在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数

在javascript发送的URL后加上t=Math.random()
当然,不是直接把t=Math.random()拷贝到URL后面,应该像这样:URL+"&"+"t="+Math.random();

2:在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")

一般情况下,这里的XMLHttpRequest不会直接使用
你应该可以找到这样的代码
XXXXX.send(YYYYYY);
那么,就把它变成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);

第二个问题在我看来就是ie的失误了。根据w3c的定义,getElementsByName应该是获取匹配name属性关键字的html元素,可是“个性”的ie偏偏在这里去匹配id属性。而相反,对于getElementById ie又去匹配name。虽然这并不会带来什么技术上的障碍,但是这么做一来未被规则和常理,二来给初学者造成困难。这一点也体现了ie难伺候的特点。

解决办法:很简单,对每个元素均设置相同的id和name属性。(如果你还有更好的解决方法,请告诉我,不胜感谢)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: