2012-02-18 15 views
2

私はWindows 7コンピュータで開発されたコードをいくつか持っていますが、Windows 7のコンパイラは何の問題もなく実行しています。私は私のMac上でそれを実行しようとしただけで、プログラムは読み込みページにとどまります。移植問題 - Internet Explorerを他のものにする

プログラムは、特定の衛星の位置を得るためにビンマップビューを表示し、いくつかのものを読み込みます。

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

答えて

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) { 
    ... 
} 

をしかし、あなたは最高のクロスブラウザのサポートを求めている場合、私はあなたを実行するためにこのようなjQueryなどのJavaScriptフレームワークを使用して、あなたをお勧めしますAJAXのリクエスト。

+0

これはSafariでもうまくいきますが、Google ChromeやFirefoxではうまくいきません - ここで問題になるのは何ですか? – Katana24

1

置き換え

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

他の人が言ったように、あなたは(非常に良いです)jQueryのようなものを使用して利益を見つけるかもしれない

EDIT

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

でいますが、かもしれません既存のコードをまだ調整する必要はありません。良い(標準)javascriptを書いていれば、ブラウザの互換性の問題は最小限に抑えられるはずです。

今後この種の問題を避けるために、他のブラウザでも早く、頻繁にテストしてください。

0

特定のWebアプリケーションをブラウザ固有のバージョンからブラウザにとらわれないものに移植する最も良い方法は、jQueryのようなjavascriptフレームワークを使用することです。これは、さまざまなブラウザ間で発生する粗いエッジをフレンドリーで統一されたAPIに滑らかにするように設計されています。たとえば、上記のコードは、jQueryのajaxリクエストを使用して複数のブラウザで行うことができます。

$.ajax({ 
    url: url, 
    success: function() { 
    // Called when the query completes 
    statechange(); 
    }}); 
関連する問題