2008-11-12 2 views

ответ

1

Вот кто-то, кто получил свои руки грязные с этим вопросом:

http://www.webmasterworld.com/javascript/3195000.htm

Один общий способ исследовать эти вопросы, чтобы взглянуть на исходный код в библиотеку JavaScript, как JQuery, так как один из функции библиотеки - обрабатывать различия. Вот фрагмент jQuery, который имеет дело с XMLHttpRequest. Обратите внимание на комментарии о различиях браузера.

// Create the request object; Microsoft failed to properly 
    // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available 
    var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 

    // Open the socket 
    // Passing null username, generates a login popup on Opera (#2865) 
    if(s.username) 
     xhr.open(type, s.url, s.async, s.username, s.password); 
    else 
     xhr.open(type, s.url, s.async); 

    // Need an extra try/catch for cross domain requests in Firefox 3 
    try { 
+0

Это нормально для конкретной загрузки HTML в контейнер, но использование Microsoft.XMLHTTP progid было бы ошибкой, если вам нужно согласованное поведение XML. – AnthonyWJones 2008-11-12 08:33:51

3

, вероятно, наиболее очевидная разница в том, как получить XMLHttpRequest в первую очередь:

var xhr; 
if (window.XMLHttpRequest) { 
    xhr = new XMLHttpRequest(); // Mozilla/Webkit/Opera 
} else if (window.ActiveXObject) { 
    xhr = new ActiveXObject('Msxml2.XMLHTTP'); // IE 
} else { 
    throw new Error('Ajax likely not supported'); 
} 

, как говорится, я бы сильно заглянуть в библиотеку абстракции, такие как jQuery. это делает вещи, как AJAX до смешного просто:

$('#container').load('/ajax/resource'); 
+0

XMLHttpRequest также относится к IE7. В IE6 было бы лучше использовать ProgID MSXML2.XmlHttp.3.0 для обеспечения возврата конкретной реализации (в некоторых случаях версия nuetral ProgID может повторно выполнить реализацию версии 2.0). – AnthonyWJones 2008-11-12 08:30:02

0

Я знаю, что это немного отговорка ответ, но такого рода вещи отвезет вас с ума, если вы используете встроенные и непоследовательные-через-браузеры методы , Выберите любую библиотеку javascript и вздохните с облегчением.