Possible Duplicate:
Chrome: Disable same origin policy鉻的getElementsByTagName()的XML DOM節點列表返回不當有關我的問題
那麼一點點背景資料:
- 寫作畫廊的JavaScript文件;從xml 文件中提取數據,here。
- 使用XMLHttpRequest()加載DOM對象,使用異步加載。
- 使用DOMParser解析responseText以生成DOM對象。
- 適用於FireFox,在Chrome上無法使用。
EDIT(請讀):
After using console.log, it seems that Chrome is reporting a Cross-Origin Issue:
- Failed to load resource file: ./Gallery/dropdown_style.css
- XMLHttpRequest cannot load file: ./Gallery/gallery_info.xml. Cross origin requests are only supported for HTTP.
- NodeList[0]
- length: 0
- Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
- Failed to load resource ./Gallery/Pictures/bg_one.jpg
Now my questions are:
- How do I fix this on the local level (offline)?
- Will this still be a problem even if I upload all the files to the same server?
- If so, what's the solution for that as well (online)?
現在DOM對象來通過,在兩個Firefox和Chrome大概是正確的。 而在下面的代碼:
window.alert(xmlDoc.getElementsByTagName("pic"));
它返回「HTML集」,或者在Chrome中,「節點列表」的響應。但是當我在Chrome中詢問NodeList的長度時,它會返回0,這意味着NodeList的格式不正確,或者不是我的意圖。
在FireFox中,長度將返回值2,這是我的意圖。
這裏是我的源代碼,沒有多餘的行話:
var elemPic = [];
function initGallery(xmlFName){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", xmlFName, true);
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4){ //since it's offline and local, don't check status == 200
//use a DOMParser, which is in a different file
myCallBack(parseXml(xmlhttp.responseText));
}
}
xmlhttp.send();
}
function myCallBack(xmlDoc){
//window.alert(xmlDoc);
elemPic = xmlDoc.getElementsByTagName("pic");
//window.alert(elemPic);
for(var i = 0; i < elemPic.length; i++){
//whats the source path?
var src = elemPic[i].getElementsByTagName('src')[0].childNodes[0].nodeValue;
window.alert(src);
}
}
這是我的整個源文件夾,如果你想看到它:Source Folder
我不知道它的問題這就是:
- DOM XML對象是腐敗
- 節點列表已損壞
- 總體Chrome的問題與的getElementsByTagName()
- 其他
如果你們能幫助我確定問題的確切來源和解決方案,那麼我會非常感激。
嘗試使用console.log。它實際上打印出對象的內容,包括NodeList,這就是爲什麼建議通過window.alert進行調試的原因。 – Luminously
我會給你一個鏡頭,謝謝。 – jhwg
好吧,whaddya知道,它看起來像是一個跨本地錯誤,本地訪問。 – jhwg