Я пытаюсь посмотреть, что такое getchas в использовании XmlHttpWebRequest, чтобы он работал для Safari, Firefox и IE?Различия в том, как XmlHttpRequest ведет себя с разными браузерами?
ответ
Вот кто-то, кто получил свои руки грязные с этим вопросом:
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 {
, вероятно, наиболее очевидная разница в том, как получить 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');
XMLHttpRequest также относится к IE7. В IE6 было бы лучше использовать ProgID MSXML2.XmlHttp.3.0 для обеспечения возврата конкретной реализации (в некоторых случаях версия nuetral ProgID может повторно выполнить реализацию версии 2.0). – AnthonyWJones 2008-11-12 08:30:02
Я знаю, что это немного отговорка ответ, но такого рода вещи отвезет вас с ума, если вы используете встроенные и непоследовательные-через-браузеры методы , Выберите любую библиотеку javascript и вздохните с облегчением.
Существует очень хорошая статья обо всех основных bugs found in XMLHttpRequest implementations и очень легкая implementation of a XMLHttpRequest wrapper, которая работает с этими ошибками при экспонировании точно такого же объекта XMLHttpRequest.
Это нормально для конкретной загрузки HTML в контейнер, но использование Microsoft.XMLHTTP progid было бы ошибкой, если вам нужно согласованное поведение XML. – AnthonyWJones 2008-11-12 08:33:51