日期:2014-05-16  浏览次数:20594 次

在HTML5中载入了AJAX的文件,在IE中正常,但是CHROME中出现了问题,有源码,不是很复杂,想知道到底是出了什么问题。
首先是AJAX的JS文件如下:

onload=function(){
//这个是为了让第一个输入框在打开时就获得焦点
document.getElementsByTagName("input")[0].focus();
}
//onload之外,这是创建AJAX的函数
function create_ajax(){
var request=null

try{
request=new XMLHttpRequest();
if(request.overrideMimeType){
request.overrideMiMeType("text/xml");
}
}catch(e){
try{
request=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
}

return request;
}
//这个地方创建AJAX对象
var handler=create_ajax();
//这个是当HTML中出发onblur事件后,调用的函数onblur="q(this,this.value);"
function q(obj,value){
url="server.php?username="+value;
handler.open("get",url,true);
//实际测试的时候,q()这个函数调用了,但是onreadystatechange这个函数在CHROME下没被执行
handler.onreadystatechange=function(){
//**************************
//在CHROME下,进不去这个IF语句!!包括onreadystatechange也没进来!!
//**************************
if(handler.readyState==4){
if(handler.status==200){
if(typeof(obj.nextSibling.textContent)=="string"){
obj.nextSibling.textContent=handler.responseText;
}else{
obj.nextSibling.innerHTML=handler.responseText;
}
}else{
return;
}
}else{
return;
}
}
handler.send(null);
}
//这个是当出发onfocus事件后触发的,onfocus="r(this,"somestring");"
function r(obj,value){
obj.nextSibling.innerHTML='<font color="orange">'+value+'</font>';
return false;
}


然后这是HTML代码,省去多余的:

<!Doctype html>
<html>
<head>
<script type="text/javascript" src="./js/ajax_neo.js"></script>
</head>
<body>
...
<!-- 输入框的获取焦点和失去焦点事件 -->
<input type="text" name="username" onfocus="r(this,'somestring');" onblur="q(this,this.value);" />
...
</body>
</html>


想问一下,为什么在CHROME下面进不去那个IF语句包括onreadystatechange函数,在IE下就是正常的.
我是通过localhost/demo.html的方式访问的

------解决方案--------------------
用jquery吧,代码比这个简单很多,兼容性也好。
------解决方案--------------------
本帖最后由 showbo 于 2013-03-07 11:31:28 编辑
function r(obj,value){
    obj.nextSibling.innerHTML='<font color="orange">'+value+'</font>';
    return false;
}

这句兼容性有点问题,input后面不能有空白内容,空白内容在非ie浏览器下也算一个节点,这样在chrome下可能出现不了能要的效果


if (request.overrideMimeType) {
     //request.overrideMiMeType("text/xml");//大小写没区分
     request.overrideMimeType("text/xml");