2012-02-18 43 views
2

我有一些代碼是在Windows 7計算機上開發的,可以運行任何Windows 7操作系統而不會出現任何打嗝。我試着在我的Mac上運行它,程序只停留在加載頁面上。移植問題 - Internet Explorer的其他內容

程序顯示bing地圖視圖並加載一些東西以獲取特定衛星的位置。現在所有的數學和東西的作品,但我認爲問題就出在這裏:

function getOrbitalElements() 
{ 
TLE_Line1=""; 
TLE_Line2=""; 
pgTXT = ""; 
xmlhttp = null; 
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
if (xmlhttp!=null) 
{ 
    xmlhttp.onreadystatechange = stateChange; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 
} 

} 

那麼,有沒有辦法,這是可以改變在任何瀏覽器中運行?謝謝 P.S.如果您需要查看整個代碼,我將添加它

+0

您是否使用任何JS庫(如jQuery)? – Cameron 2012-02-18 18:39:58

回答

5

Mac上沒有ActiveX對象。下面一行將無法工作:

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 

你可以使用XMLHttpRequest

var xmlhttp = null; 
if (window.XMLHttpRequest) { // Mozilla, Safari, ... 
    xmlhttp = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { // IE 8 and older 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

if (xmlhttp != null) { 
    ... 
} 

但是,如果你正在尋找最好的跨瀏覽器的支持,我會使用JavaScript框架,如jQuery執行建議您在AJAX請求。

+0

它在Safari上運行良好 - 但它不適用於Google Chrome或Firefox - 這裏可能存在什麼問題? – Katana24 2012-02-18 23:50:13

1

更換

xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 

xmlhttp = window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest(); 

編輯

正如其他人所說,你可能會使用一些像jQuery(這是非常好的),找到利益,而是你可能不需要花費精力來調整現有的代碼。如果你已經寫好了(標準)JavaScript,你會發現瀏覽器的交叉兼容性問題應該是最小的。

未來,一定要儘早在其他瀏覽器中測試以避免此類問題。

0

將瀏覽器特定版本移植到瀏覽器不可知的特定Web應用程序的最佳方式是使用JavaScript框架,如jQuery。它旨在將不同瀏覽器之間出現的粗糙邊緣變成友好的+統一API。例如,上面的代碼可以通過jQuery ajax請求在多個瀏覽器中完成。

$.ajax({ 
    url: url, 
    success: function() { 
    // Called when the query completes 
    statechange(); 
    }});