2012-02-18 3 views
2

У меня есть код, который был разработан на компьютере под управлением Windows 7 и запускает любой компилятор Windows 7 без каких-либо икота. Я попробовал запустить его на своем Mac, и программа просто остается на странице загрузки.Porting Issue - 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 выполнять ваши Запросы AJAX.

+0

Он хорошо работает на Safari - но он не работает на Google Chrome или Firefox - что может быть проблемой здесь? – Katana24

1

Заменить

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

с

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

EDIT

Как уже сказал, вы могли бы найти выгоду в использовании что-то вроде Jquery (что очень хорошо), но вы можете не нужно предпринимать усилия по настройке существующего кода. Если вы написали хороший (стандарт) javascript, вы обнаружите, что проблемы кросс-совместимости браузера должны быть минимальными.

В будущем не забудьте проверить в других браузерах раньше и часто, чтобы избежать такой проблемы.

0

Лучший способ переноса определенного веб-приложения из определенной версии браузера в агрономический браузер - использовать инфраструктуру javascript, такую ​​как jQuery. Он разработан, чтобы сгладить грубые грани, которые возникают между разными браузерами, в дружественный + унифицированный API. Например, приведенный выше код может быть выполнен в нескольких браузерах с помощью запроса jQuery ajax.

$.ajax({ 
    url: url, 
    success: function() { 
    // Called when the query completes 
    statechange(); 
    }}); 
Смежные вопросы