2016-01-28 56 views
0

我有一些代碼,可以在這裏找到在JS Fiddle的Javascript工作鉻,歌劇和Edge,但不能在Firefox或IE 11

var getJSON = function (url) { 
    "use strict"; 
    return new Promise(function(resolve, reject) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('get', url, true); 
    xhr.responseType = 'json'; 
    xhr.onload = function() { 
     var status = xhr.status; 
     if (status == 200) { 
     resolve(xhr.response); 
     } else { 
     reject(status); 
     } 
    }; 
    xhr.send(); 
    }); 
}; 

function updateCount() { 
    "use strict"; 
    getJSON('http://192.99.124.166:8080/count').then(function(data) { 
    console.log('update'); 
    stats.innerText = data.result; //display the result in an HTML element 
}); 
} 

updateCount(); 

setInterval(updateCount, 10000); 

如果您訪問的鉻,歌劇或Microsoft邊撥弄頁您會看到服務器/播放器統計信息每10秒自動更新一次,並按照預期方式進行操作。但是,如果您訪問IE 11,或Firefox沒有顯示應該加載結果的div中。

我不擅長Javascript並且最初由某人通過IRC頻道提供了一些幫助,我使用JS Lint檢查代碼,並且我更新了它並修復了他們認爲錯誤的代碼,使用嚴格「等等。但是這並沒有解決IE 11或Firefox的問題。

任何幫助將非常感謝在弄清楚這一點,我確實在IE 11和Firefox以及調試控制檯上使用了檢查器,但沒有任何內容正在觸發或顯示。實際上,它甚至在瀏覽器控制檯中顯示(更新)消息,但不顯示div!

+0

問題是'innerText'。看看這個http://stackoverflow.com/questions/1359469/innertext-works-in-ie-but-not-in-firefox – PrinceG

+0

嗨,謝謝你的迴應。我在我的問題後不久就發現了這個話題,並開始閱讀它。我可以讓代碼在Firefox上正常工作,如果我使用textContent,但它仍然無法在IE 11上工作,即使這樣做。所以我仍然試圖找出它.. – MajorCyto

回答

0

承諾是not supported by IE。但有很多A+ compliant polyfills可供使用。

innerTextdoes not work in Mozilla可供選擇的替代屬性有textContentinnerHTML用於標記。

+0

innerHTML似乎解決了Firefox的問題,它仍然在Chrome和Edge&Opera中工作。但是,不是IE 11. 原諒我,我不熟悉JavaScript的一般,所以我不確定什麼「承諾」指的是。 編輯:哦,我剛剛讀了第一個鏈接,這就是承諾。但是,我不夠精通,能夠重寫或使用polyfill來修復它..但是,謝謝你給我解釋鏈接,無論如何。我可能只是不幸的離開IE瀏覽器。 – MajorCyto

+0

當連續執行多個異步操作時,Promise對象有助於避免深度嵌套回調。就目前而言,您的示例可以通過處理來自load listener函數內的響應數據來進行重寫,而無需承諾。請參閱[使用XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest)以獲取工作示例。 – traktor53

相關問題