2016-05-03 1 views
-2

私はFireFoxからのライブ情報を取得しようとしているサーバーを持っています。これは正常に動作し、xmlを使用しているため、 。私はクロムと理解していないxmlを許可しないが、私はこれを修正する方法がわからない。誰かが自分の知識を貸して私を助けることができるかどうか分かります。ここにコードがあります。私は、問題は、elseの場合は、関数のloadXMLDocのクロムによると、エラーは--- xmldoc.loadは関数ではないに基づいて考えています。すべてのブラウザで実行されるようにコードを修正する方法

<SCRIPT language="JavaScript"> 

// Object to load the live standings 
    var xmldoc; 
    function loadXMLDoc(xmlurl) { 
if (window.ActiveXObject) { 
    // code for IE 
    xmldoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmldoc.onreadystatechange = state_Change 
    xmldoc.async = true 
    xmldoc.load(xmlurl); 
} else if (document.implementation && document.implementation.createDocument) { 
    // code for Mozilla, Firefox, Opera, etc. 
    xmldoc = document.implementation.createDocument("","",null) 
    xmldoc.async = true 
     xmldoc.onload = populate 
    xmldoc.load(xmlurl) 
} else { 
    // alert('Your browser cannot handle this script'); 
} 
} 
var interval, livetab 

function populate() { 
livetab = document.getElementById ? document.getElementById('livetable') :  document.all.livetable 

// First remove all existing rows from the body 
for (var i = livetab.tBodies[0].rows.length - 1; i >= 0; i--) { 
    livetab.tBodies[0].deleteRow(i) 
} 

// Load the rows 
if (xmldoc != null) { 

    var xn 
// Do the common data here 
    xn = xmldoc.getElementsByTagName('track')[0].childNodes[0] 
livetab.caption.innerHTML = (xn == null ? '' : xn.nodeValue) 
    xn = xmldoc.getElementsByTagName('server')[0].childNodes[0] 
document.getElementById('server').innerHTML = (xn == null ? '' : xn.nodeValue) 
    xn = xmldoc.getElementsByTagName('session')[0].childNodes[0] 
document.getElementById('session').innerHTML = (xn == null ? '' : xn.nodeValue) 
    xn = xmldoc.getElementsByTagName('progress')[0].childNodes[0] 
document.getElementById('progress').innerHTML = (xn == null ? '' : xn.nodeValue) 

    for (var row = 0; row < xmldoc.getElementsByTagName('standings').length; row++) { 
     // Add rows 
     var r = livetab.tBodies[0].appendChild(document.createElement('tr')) 
    r.className = 'detail' + (row & 1 ? 'odd' : 'even') 
    var c 

    c = document.createElement('td') 
    c.className = 'col1' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('position')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col2' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('driver-name')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col3' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('vehicle')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col4' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('best-lap')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col5' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('behind-leader')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col6' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('last-lap-time')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col7' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('laps-led')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col8' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('total-laps')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 

    c = document.createElement('td') 
    c.className = 'col12' + (row & 1 ? 'odd' : 'even') 
    xn = xmldoc.getElementsByTagName('finish-status')[row].childNodes[0] 
    c.appendChild(document.createTextNode(xn == null ? '' : xn.nodeValue)) 
    r.appendChild(c) 
    } 
    } 

// Refresh interval 
clearInterval(interval) 
interval = setInterval("loadXMLDoc('ARCALive?id=livedata')", 6000) 
} 

window.onload = function() { loadXMLDoc('ARCALive?id=livedata') } 
//window.onload = function() { loadXMLDoc('ARCALive/ARCATest.xml') } 
</script> 
+0

ChromeはXMLを許可していませんか?いつから?何かが変わっていない限り、私はそれを知らない。またはどちらか一方。 – Rob

+0

申し訳ありませんが、私はChromeがxml loadメソッドを使用できないことを意味していました。 –

答えて

0

あなたが(ロードされませopen()

を使用する必要があります)

、あなたがXMLリクエストを行ういけないので、ActiveXObjectのは、クロムには存在しないとして、第二の負荷が関数ではない理由がある(と他の最新のブラウザ)、XMLHttpRequestを使用する必要があります。代わりに、xmlファイルを取得せず、空のhtml/xmlドキュメントを作成するdocument.implementation.createDocumentを使用します。

編集:追加例:

JS:

function getXML (url) { 
    var xmlReq = new XMLHttpRequest() || new ActiveXObject('Microsoft.XMLDOM'); 

    xmlReq.onreadystatechange = function() 
    { 
    if (xmlReq.readyState == 4 && xmlReq.status == 200) 
    { 
     createTable(xmlReq.responseXML); 
    } 
    }; 

    xmlReq.open("GET", url, true); 
    xmlReq.send(); 
} 

function createTable (xmlDoc) { 
    var table = document.createElement('table'); 
    var tr; 
    var c; 

    //you should modify this to work with your xml 
    for (var i = 0; i < xmlDoc.childNodes[0].childNodes.length; i++) { 
    c = xmlDoc.childNodes[0].childNodes[i]; 

    tr = document.createElement('tr'); 

    for (var I = 0; I < c.childNodes.length; I++) { 
     tr.innerHTML += "<td>" + c.childNodes[I].innerHTML + "</td>"; 
    } 

    table.appendChild(tr); 

    } 

    document.body.appendChild(table); 
} 

のtest.xml:

a ab 
b bb 

getXML('test.xml'); 

はあなたにこのようにやや見えるテーブルを与えるだろう:

<?xml version="1.0" encoding="UTF-8"?> 
<tabel> 
    <row> 
     <test>a</test> 
     <test2>ab</test2> 
    </row> 
    <row> 
     <test>b</test> 
     <test2>bb</test2> 
    </row> 
</tabel> 

ので、これをやって

関連する問題