下面的腳本執行,並在Safari,Chrome和Firefox的正常工作失敗。不幸的是IE8是我的目標瀏覽器之一,所以這是一個問題。由於我對Ajax沒有太多的經驗,我不確定從哪裏開始尋找。阿賈克斯腳本IE8
我注意到,IE報告第15行(標有**)的錯誤,並沒有真正意義的if-else語句應該連看該行停止。
function getNames(str) {
var xmlhttp;
// Clear previous queries
if(str.length == 0){
document.getElementById("txtHint").innerHTML = "";
return;
// Due to the high number of possible hits we'll demand 3 chars
// before we start querying.
}else if(str.length < 3){
return ;
}
if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}else{ // code for IE6, IE5
**xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");**
}
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
// String from get_names.php is comma separated
var arr = xmlhttp.responseText.split(",");
// The UL list we want our names in
var ul = document.getElementById("names");
// Clear the list for each key in
if(ul.hasChildNodes()){
while(ul.childNodes.length >= 1){
ul.removeChild(ul.firstChild);
}
}
// Step trough the String in Array form
for(var i = 0; i < arr.length; i++){
// :@ means that we've reached the end of applicable names.
if (arr[i] != ":@") {
var li = document.createElement("li");
li.innerHTML = newListItem = arr[i];
// Inserts the current name into the list.
ul.insertBefore(li, ul.getElementsByTagName("li")[0]);
}
}
}
}
xmlhttp.open("GET", "./ext/get_names.php?q=" + str, true);
xmlhttp.send();
}
股票答案:你有沒有考慮過使用像jQuery這樣的框架?他們會爲您處理所有這些跨瀏覽器的問題。 – Jamiec 2012-03-09 08:24:52
不是你的問題的直接答案,但也許你應該考慮一個js框架(jQuery/mootools/...)。這些跨平臺工作,並節省您的頭痛 – 2012-03-09 08:25:36
你能否添加邏輯來測試,如果Active X的對象可用,即:(IF(window.ActiveXObject)) – 2012-03-09 08:33:28