我想看看使用 XmlHttpWebRequest 的问题是什么,以便它适用于 Safari、Firefox 和 IE?
Harris
问问题
3464 次
4 回答
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');
于 2008-11-12T02:40:13.690 回答
2
有一篇非常好的文章,介绍了在 XMLHttpRequest 实现中发现的所有主要错误,以及一个非常简单的 XMLHttpRequest 包装器实现,它可以解决这些错误,同时暴露完全相同的 XMLHttpRequest 对象。
于 2008-11-12T09:15:49.617 回答
1
这是一个被这个问题弄脏的人:
http://www.webmasterworld.com/javascript/3195000.htm
研究这些问题的一种通用方法是查看 javascript 库(如 jQuery)的源代码,因为该库的功能之一是处理差异。这是处理 XMLHttpRequest 的 jQuery 片段。请注意有关浏览器差异的注释。
// 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 {
于 2008-11-12T02:39:39.227 回答
0
我知道这是一个逃避现实的答案,但如果你使用内置的和跨浏览器不一致的方法,这种事情会让你发疯。选择任何 javascript 库,然后松一口气。
于 2008-11-12T02:53:19.357 回答