Ajax兼容性问题
要解决兼容问题首先注意以下几点:
1,document.getElementById替代document.all(ie适用)
2,集合[]替代()(ie适用)
3,target替代srcElement;parentNode替代parentElement(parentNode ie适用)
4,node.parentNode.removeChild(node)替代removeNode(this)(ie适用)
5,DOMMouseScroll替代onmousewheel;-e.detail替代event.wheelDelta
6,addEventListener替代attachEvent;removeEventListener替代detachEvent
7e.preventDefault()替代event.returnValue=false;e.stopPropagation()替代event.cancelBubble=true
8,style.top、style.left等严格检查"px"单位(加"px" ie适用)
9,style="-moz-opacity:0.9"替代style="filter:alpha(opacity=90)";无其它filter
10,style.cursor="pointer"替代style.cursor="hand"(ie适用)
11,title替代alt(ie适用)
12.所有的空间在引用时都要这样引用:document.getElementById(“XX”)。
注:标明“ie适用”者为通用性建议写法,未标明者在ie里不适用。
在AJAX中,如果网络或远程服务器出现中断,会发生什么呢?实际上,存在两个主要问题;默认地,它们并没有在XMLHttpRequest对象中得到解决。这两个主要问题是:
1.处理延迟:如果网络或远程服务器耗费较多时间,那么这个问题如何与你的AJAX应用程序相联系呢?
2.响应顺序:潜在地,网络(或服务器)会不断变化。这意味着,响应可能不会以与请求相同的顺序返回。
为了处理上面这两个问题,程序员必须编写代码来解决这个问题。对于第一个问题,一种可能的方案如下所示:
function callInProgress(xmlhttp) {
switch ( xmlhttp.readyState ) {
case 1,2,3:
return true;
break;
//Case 4和0
default:
return false;
break;
}
}
现在,在调用send()前,我可以先检查一下是否该对象正处于忙态:
if ( !callInProgress(xmlhttp) ) {
xmlhttp.send(null);
} else {
alert("I'm busy. Wait a moment");
}