JavaScriptでXML IEとFireFox

このQ&Aのポイント
  • JavaScriptでXML IEとFireFoxに関する問題を解決する方法について調べています。
  • 現在、作成中のホームページで条件に合ったデータを表示するためにXMLを使用しています。
  • しかし、IEでは正常に動作する一方、FireFoxなどの他のブラウザでは動作しません。ActiveXObjectが原因である可能性がありますが、動作する方法がわかりません。どのように実装すれば良いでしょうか?
回答を見る
  • ベストアンサー

javascriptでXML IEとfireFox

作成中のホームページで、条件を入力させてその条件に合ったデータ(XMLで管理)を表示する という内容のモノを作ろうとしています。 実際に一通り動く所までは出来たのですが、IEでしか動作せず Firefox等の他ブラウザだと動作しません。 調べてみると、ActiveXObjectが使えないようなのですが どういう方法で実装すると動作するようになるのでしょうか。 よろしくお願いします。 ----------以下ソース一部---------- // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "list", "") // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false objDoc.load("msch.xml") var objRootNode = objDoc.documentElement.childNodes =======================補足======================= 下記のようにやってみたのですが、jsのエラーが起り原因がわからないです。※fireFoxのみIEでは動作確認済 if (window.ActiveXObject) { //for IE // XML ドキュメントオブジェクト生成 var objDoc = new ActiveXObject("Msxml2.DOMDocument.3.0") objDoc.async = false // 曲情報の読込み objDoc.load("msch/msch.xml") // ワーク用の XML ドキュメントオブジェクト var objDocWk = new ActiveXObject("Msxml2.DOMDocument.3.0") } else { //for Firefox // XML ドキュメントオブジェクト生成 var xhttp = new XMLHttpRequest(); xhttp.open("GET", "msch/msch.xml", false); xhttp.send(null); var objDoc = xhttp.responseText; window.alert(objDoc); // ワーク用の XML ドキュメントオブジェクト var xhttp2 = new XMLHttpRequest(); xhttp2.open("GET", "msch/msch.xml", false); xhttp2.send(null); var objDocWk = xhttp2.responseText; window.alert(objDocWk); } // 出力用の新しいルートノードを作成 dstNd = objDocWk.createNode(1, "musiclist", "") // 曲情報のルートノードを取得 var objRootNode = objDoc.documentElement.childNodes エラー内容が objDocWk.createNode is not a function  と objDoc.documentElement is undefined   です。

  • ct2
  • お礼率80% (4/5)

質問者が選んだベストアンサー

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.2

昨日より、ちょっと進展したね! XMLHttpRequest の .responseText プロパティは、本当にテキストだよ? XML のオブジェクトは .responseXML 適当にけんさくしたページの記述をコピー、ペーストしないで、 ちゃんとドキュメントを読んだほうが早いよ! 「MDN > Docs > DOM > XMLHttpRequest」 https://developer.mozilla.org/ja/XMLHttpRequest

ct2
質問者

お礼

確かにコピペじゃダメですね^^; もうちょっと勉強して出直してきます… ありがとうございます。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

質問者さんもすでに調べがついているように activeXをIEモード以外で他のブラウザで動かすことはできませんね なんらかのXML用JSライブラリを使うことになると思います

ct2
質問者

お礼

回答ありがとうございます。 その辺りももう少し調べてみようと思います。

関連するQ&A

  • javascriptとDOMを使ったxmlの読み込みがうまくいかない

    「10日でおぼえるxml入門教室」をいう書籍を使って、xmlの勉強を始めたのですが、ダウンロードした本の内容のソースコードを実行しても想定された結果になりません。そのコードは <html> <head> <title>5-1.XML文書を読み込んでみる</title> <script language="JavaScript"> <!-- var objDoc=new ActiveXObject("Msxml2.DOMDocument"); objDoc.async=false; objDoc.load("books.xml"); window.alert(objDoc.xml); //--> </script> </head> <body> <h1>5-1.XML文書を読み込んでみる</h1> </body> </html> というもので、本来xml文書を表示したダイアログが出るはずなのですが、ブラウザで開いてもダイアログが出ずに、いきなり見出し字が表示されるだけです。 環境はMacOS10.5.5, 使用したブラウザはSafari, Firefox, Operaです。 そもそもIEでないと実行できないコードなのでしょうか? javascriptに関しても初心者なので、できるだけわかりやすい言葉で説明していただけるとありがたいです。

    • 締切済み
    • XML
  • javascriptのxml読み込みFireFoxにて

    htmlで外部javascriptを読み込んでxmlの読み込みをしています。 htmlは <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>無題ドキュメント</title> <script language="JavaScript" src="xmlSearch.js"></script> </head> <body onload="display()"> <div id="poem" align="center"></div> </body> </html> です。 javascriptは function display() { if(document.all){ xml_doc = new ActiveXObject("Microsoft.XMLDOM"); }else{ xml_doc = document.implementation.createDocument("", "", null); } xml_doc .async = false; xml_doc.load("flv.xml"); var root = xml_doc.documentElement; var book = root.childNodes; document.getElementById("poem").innerHTML = book.item(0).text; } xmlは <?xml version="1.0" encoding="UTF-8"?> <video> <pass>flv/video1.flv</pass> </video> です。 しかしこれだとFireFoxでは何も表示されません。 どなたか原因が分かる方いませんか?

  • IE6 + javascript

    すみません、先ほども質問したのですが、締め切ってしまったのでもう一度質問させてください。 下記コードが、Firefoxでは動作するのですが、IEではjavasciptの部分が動作していません。 もちろん、javascriptの設定は有効にしてあります。 var browser = navigator.appName; if(browser.charAt(0) == "N") { window.addEventListener("load",change_page(page_id),false); } else if (browser.charAt(0) == "M") { window.attachEvent("onLoad",change_page(page_id)); } .... function httpRequest() { if (window.ActiveXObject) { try { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { try { httpObj = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { httpObj = false; } } } else if (window.XMLHttpRequest){ try{ httpObj = new XMLHttpRequest(); } catch(e) { httpObj = false; } } return httpObj; } change_page()はfunctionです。 なぜIE6ではjavascriptが動かないのでしょう? ソースのどこが悪いのかわからず、どなたかアドバイスあればお願いします!

  • xmlをjavascriptで読み込み、HTMLに表示させようとしてい

    xmlをjavascriptで読み込み、HTMLに表示させようとしています。 IEでは出来たのですが、それ以外でのブラウザでどうしても読み込むことが出来ません。 簡単なxmlを作ります。例えばこの『これを表示』というテキストをfirefoxで表示させたい場合はどのように書けば良いのでしょうか? <?xml version="1.0" encoding="UTF-8"?> <items> <item>これを表示</item> </items> 今はこのようなjsを作っています。 アラートのAAAでxmlのテキストを表示させるようにしたいのですが・・・ ノードへのアクセス方法?が間違っているのはわかっているんです。ただ、検索して調べても色々出てきて、色々試しても上手くいかず・・・どうしても分がわかりません。 すみません、どなたかご指摘お願い致します!! xmlData = new XMLHttpRequest(); // XMLドキュメントをDOMで扱うためのオブジェクトを作る xmlData.overrideMimeType("sample.xml"); // XMLドキュメントを読み込む var AAA = xmlItemData.documentElement.childNodes[1].childNodes[1].text; alert(AAA); 宜しくお願い致します。

  • chromeでxmlをJSで表示するには?

    chromeだとエラーで表示できません。 どうすればいいのでしょうか? window.onload=function(){ Docm = new ActiveXObject('microsoft.XMLDOM'); Docm.async = false; Docm.load('xmlsrc'); var string = ""; if(Docm.documentElement.hasChildNodes()) { var i = 0; var n_num = Docm.documentElement.childNodes.length; while (i < n_num) { string += Docm.documentElement.childNodes.item(i).text += " "; i++; } } else { string +="子ノードはありません。"; } hyouji.innerHTML = string; }

  • 以下のスクリプトがVista×IE8、Firefox(現時点でわかって

    以下のスクリプトがVista×IE8、Firefox(現時点でわかっているところで)で、 想定と異なった動作をしてしまいます。 XP上であれば、特に問題なく動くのですが、Win7は手元にないので、わかりません。 しかし、原因が一向にわからず・・・。 ご教授いただけますと幸いです。 var xhr; function prefCheck(){   ~省略~ xhr = false; if(window.ActiveXObject) { try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } } else if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); xhr.overrideMimeType('text/xml'); } xhr.onreadystatechange=PrefCheck; xhr.open("GET","hogehoge.php, true); xhr.send(null); } function PrefCheck(){ if ((xhr.readyState == 4) && (xhr.status == 200)){ window.alert("hogehogehogehogehogehoge"); } }

  • IEでDOMが作成出来ない

    少し昔に作成した未完成のプログラムを発掘したので、修正しています。 そこでIEでAjaxを使用しXMLを受信しDOMにして、その後反映したいのですが、 受信したXMLをDOMにする所で上手く行きません。 // ソース // function parserXML(xmlText) {  if (window.ActiveXObject) {   domDoc = new ActiveXObject('Msxml2.DOMDocument.6.0');   domDoc.async = false;   domDoc.loadXML(xmlText);   return domDoc;  } else if(window.DOMParser) {   return (new DOMParser).parseFromString(xmlText, "text/xml");  } else {   return null;  } } この関数のreturnを計ると、どうしてもIEの場合はデータが出て来ません。 ちなみに渡しているXMLのテキストも確認しましたが問題が見あたりませんでした。 どこが問題なのでしょうか?

  • JavaScriptを使うとXMLで実体参照されない

    htmlに書き込んだjsで、プルダウンメニュとテキストボックスに入力した検索語で、xmlから条件に合ったデータを抽出し、別のhtmlに書き出すという仕組みなんですが、下記のようにxmlデータに実体参照を使用すると、jsが動きません。なぜでしょうか? もちろん、実体参照の箇所を消去すると、作動します。 お分かりの方、ご教授くださいませ。よろしくお願いいたします。 ★検索エンジン部分(js) function disp(){ var strTitl=parent.up.form.title.value; var strAuthr=parent.up.form.author.value; var objDoc=new ActiveXObject("Msxml2.DOMDocument"); objDoc.async=false; objDoc.load("books.xml"); flg=false; strFlt="/books/book"; if(strTitl!=""){ strFlt+="[(title = '" + strTitl + "')"; flg=true; } if(strAuthr!=""){ if(flg){ strFlt+=" and "; }else{ strFlt+="["; flg=true; } strFlt+="(author ='" + strAuthr + "')"; } if(flg){strFlt+="]";} var clnNod=objDoc.selectNodes(strFlt); with(parent.down.document){ open("text/html"); writeln("<html><head><title></title></head><body>"); for(i=0;i<clnNod.length;i++){ objNod=clnNod.item(i); objTit=objNod.selectSingleNode("title"); objAut=objNod.selectSingleNode("author"); objPrc=objNod.selectSingleNode("price"); objId=objNod.selectSingleNode("@id"); writeln("<table border='1'><tr><td>"); writeln(objId.text + ".</td><td>"); writeln(objTit.text + "(" + objAut.text + ")" + "</td><td>"); writeln(objPrc.text + "円</td></tr></atble>"); } writeln("</body></html>"); close(); } } ★xmlデータ(books.xml) <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE books[<!ENTITY y2000 "2千円">]> <books> <book id="001"><title>タイトルA</title><author>作者A</author><price>&y2000;</price></book> </books>

    • ベストアンサー
    • XML
  • ActiveXObjectで取得したXMLの解析処理ができない

    Ajaxの勉強をしているのですが困っています。 ActiveXObjectで取得したXMLの解析処理ができないのです。 1.JavaScriptで新たにActiveXObjectのオブジェクトを作成 (例)var obj = ActiveXObject(Msxml2.XMLHTTP); 2.上記オブジェクトに対しopen(),send()を行う。 (例)obj.open(callback,url,false); 3.サーバーにてリクエスト受信後、JSP上に記述したXMLを送信。 4.上記オブジェクトに対しresponseXMLを行う。 (例)var doc = obj.responseXML; 5.XMLの要素を取得 (例)doc.getElementsByTagName("name"); 4の結果何らかのオブジェクトは取れているようなのです(alertで表示してみると"[Object]"と表示される。)が、実際に5でXML中の要素を取ろうとすると何も取得できません。一方4をobj.responseText;とすると、(alertで表示してみると文字化けしていますがXMLの)内容が取得できます。 なぜレスポンスをXMLにして取得した場合、情報を取得できないのでしょうか?ご教授いただけませんでしょうか? よろしくお願いいたします。

    • 締切済み
    • PHP
  • VB2005でXMLのテキストデータをXMLデータにするには?

    VB2005の初心者です。 タグ付きのXMLのテキストデータを読み込んで、項目ごとにDBに登録したいのですが、やり方が分りません。 テキストデータをXMLデータ、もしくはノード、もしくはデータセット型に変換しなければならないと思うのですが、そのやり方を教えていただきたいです。 ちなみに、XMLデータをテキストデータにするのは下記のとおりでできました。この strText を逆にXMLデータに変換したいです。 Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:XMLData.xml") strText = xmlDoc.xml 何かヒントでも良いので、たくさんの方の知恵をお借りしたいです。

専門家に質問してみよう