小弟是新手 最近遇到一个问题
望版上各位高手不吝赐教
code如下:
function detectBrowser(){
var sAgent = navigator.userAgent.toLowerCase();
this.isIE = (sAgent.indexOf("msie")!=-1); //IE6.0-7
this.isFF = (sAgent.indexOf("firefox")!=-1);//firefox
this.isSa = (sAgent.indexOf("safari")!=-1);//safari
this.isOp = (sAgent.indexOf("opera")!=-1);//opera
this.isNN = (sAgent.indexOf("netscape")!=-1);//netscape
this.isCh = (sAgent.indexOf("chrome")!=-1);//chrome
this.isMa = this.isIE;//marthon
this.isOther = (!this.isIE && !this.isFF && !this.isSa
&& !this.isOp && !this.isNN && !this.isSa);//unknown Browser}
function handleStateChange(){
if (objXMLHTTP.readyState == 4) {
if (objXMLHTTP.status == 200) {
var ret = objXMLHTTP.statusText;
if (ret != ""){
var info = ret.split('|');
code = parseInt(info[0], 10);
city = String(info[1]);
temp = parseInt(info[2], 10);
unit = String(info[3]);
showWeather();
}
} else{
if(time <= 10){
setTimeout("checkWeather();", time*1000); time += 5; }
else{
code = null;
showWeather();
}
}
}
}
function checkWeather(){
var oBrowser = new detectBrowser();
if (window.XMLHttpRequest) {
objXMLHTTP=new XMLHttpRequest(); }// code for IE
else if (window.ActiveXObject) {
objXMLHTTP=new ActiveXObject("Microsoft.XMLHTTP");
}
objXMLHTTP.open("GET","<%=controller%>/?checkWeather=1",true);
if (oBrowser.isCh && oBrowser.isSa) { /*let Chrome refresh page */
objXMLHTTP.setRequestHeader("If-Modified-Since",(new Date(0)).toISOString()); }else{ /*let IE refresh page */
objXMLHTTP.setRequestHeader("If-Modified-Since",new Date(0));
}
objXMLHTTP.onreadystatechange = handleStateChange;
objXMLHTTP.send(null);
}
这段code的目的是透过XMLHttpRequest物件 取得有关城市 天气温度等资讯
透过WireShark抓的封包 理论上都会收到下列封包
HTTP/1.1 200 28|Taipei|16|c
在handleStateChange()中 objXMLHTTP.statusText便可取得"28|Taipei|16|c"
之后再根据这个去parse
run在IE FireFox Chrome都可以正常的get到资讯
但是run在Safari上面很奇怪 不管试几次
objXMLHTTP.statusText所得到的一直是"OK"
WireShark抓到的封包明明就是"HTTP/1.1 200 28|Taipei|16|c"
而不是"HTTP/1.1 200 OK"
想请教各位高手 是小弟code有什么地方写错了
还是Safari上get到的statusText会always是"OK"?
还请高手指点 感激不尽!!