2011-12-09 10 views
3

従来のJavaScriptを使用してxmlファイルを読み込むプログラムを作成します。 IEでなく、Firefoxのでは正しく動作しXMLファイルを読み込み、FirefoxではなくIEで正しく実行してください

<script type="text/javascript"> 
var xmlDoc; 

function loadxml(sImportXML) { 
    if(window.ActiveXObject && /Win/.test(navigator.userAgent)) { 
     xmlDoc = new ActiveXObject("Msxml.DOMDocument"); 
     xmlDoc.async = false; 
     xmlDoc.onreadystatechange = function() { 
     if (xmlDoc.readyState == 4) readXML(); 
     } 
     xmlDoc.load(sImportXML); 
    } 
    else if(document.implementation && document.implementation.createDocument) { 
     xmlDoc = document.implementation.createDocument("","",null); 
     xmlDoc.async=false; 
     alert(sImportXML); 
     var loaded = xmlDoc.load(sImportXML); 
     if (loaded) { 
      readXML(); 
     } 
    } 
    else { 
     alert("Your browser can\'t handle this script"); 
     return; 
    } 
} 

<body onload="loadxml('../XML/Question.xml');"> 

アッパーloadxml機能。
アラートラインにはこの値が表示されます../XML/Question.xml
xmlDoc.Load関数が正しく実行されませんでした。
それが制限されたURIにエラーのアクセスの返信は、誰も私を助けてください

を否定しました。

答えて

2

Firefoxでは、JavaScriptはユーザーのローカルファイルシステム上のファイルにアクセスできません。単にそれを行う方法はありません。それは巨大なセキュリティ違反になります。

これは、ActiveXが「Msxml.DOMDocument」のようなアプリがjavascriptよりも強力でプラグアンドプレイのアプリケーションモジュールシステム(ミニブラウザプラグインのようなもの)なので、これはInternet ExplorerのActiveXで動作します。ユーザーのローカルファイルシステム上のファイルにアクセスします。

しかし、document.implementationは通常のjavascriptなので、すべてのセキュリティ上の制限があります。主なものは、ユーザーのファイルシステムがオフラインであることです。

XMLファイルがサーバー上にある場合、あなたはこのようなあなたのhtmlコードに埋め込むことができます。

<script id="the-xml" type="text/xml"> 
     ....your xml document contents here.... 
</script> 

その後、あなたはこのようなJavaScriptでコンテンツを取得することができます:

var sImportXML = document.getElementById('the-xml').text; 

しかし、依存をあなたのアプリケーションでは、javascript xmlをまったく使用しないことが理にかなっているかもしれません。通常、サーバー側でxmlを解析し、jsonまたはhtmlスニペットでjavascriptと通信します。

+2

あなたの答えに基づいて@ベンリーに感謝します。私は、まずxmlファイルを展開するためにWebサーバーを使用する必要があると仮定します。私は正しいですか? –

+0

はい、サーバー上にXMLファイルがある場合は、ドキュメントに埋め込み、後でjavascriptで読み込むことができます。私はそれを行う方法を説明するために自分の投稿を更新します。 –

+0

もう一度@ベンリーに感謝します。 –

関連する問題