重複の可能性:
Chrome: 同一オリジン ポリシーを無効にする
私の問題に関する少しの背景情報:
- ギャラリー用の JavaScript ファイルを作成します。ここでは、xml ファイルからデータを取得します。
- 非同期読み込みを使用して、XMLHttpRequest() で DOM オブジェクトを読み込みます。
- responseText を DOMParser で解析して DOM オブジェクトを作成します。
- FireFox では動作しますが、Chrome では失敗します。
編集(お読みください):
console.log を使用した後、Chrome がクロスオリジンの問題を報告しているようです:
- リソース ファイルの読み込みに失敗しました: ./Gallery/dropdown_style.css
- XMLHttpRequest はファイルを読み込めません: ./Gallery/gallery_info.xml。クロス オリジン リクエストは、HTTP でのみサポートされています。
- ノードリスト[0]
- 長さ: 0
- キャッチされないエラー: NETWORK_ERR: XMLHttpRequest 例外 101
- リソースの読み込みに失敗しました ./Gallery/Pictures/bg_one.jpg
今私の質問は次のとおりです。
- これをローカル レベル (オフライン) で修正するにはどうすればよいですか?
- すべてのファイルを同じサーバーにアップロードしても、これは問題になりますか?
- もしそうなら、それに対する解決策は何ですか(オンライン)?
これで DOM オブジェクトが表示され、おそらく Firefox と Chrome の両方で正しいものになります。そして、次のコードで:
window.alert(xmlDoc.getElementsByTagName("pic"));
「HTML Collection」または Chrome では「NodeList」のレスポンスで返されます。しかし、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);
}
}
そして、見たい場合は、ここに私のソースフォルダー全体があります:ソースフォルダー
これがどの問題なのかわかりません:
- DOM xml オブジェクトが壊れています
- NodeList が壊れています
- getElementsByTagName() に関する包括的な Chrome の問題
- 他の
問題の正確な原因と解決策を特定するのを手伝っていただければ、とても感謝しています。