CODE: [Copy to clipboard]而在IE6及以下版本,则使用以下语句创建XMLHttpRequest:var xmlHttp = new XMLHttpRequest();
CODE: [Copy to clipboard]那IE7又与IE6有些什么区别呢?
CODE: [Copy to clipboard]由此可以看出,IE7比IE6多了Native XMLHTTP支持。那么会不会是这个Native XMLHTTP导致的问题呢?不用这个Native XMLHTTP会怎么样?还好IE7的设计者也考虑了这一点,IE7提供了两个功能:var xmlHttp = null;
if (window.XMLHttpRequest) {
// If IE7, Mozilla, Safari, and so on: Use native object.
xmlHttp = new XMLHttpRequest();
}
else
{
if (window.ActiveXObject) {
// ...otherwise, use the ActiveX control for IE5.x and IE6.
xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
}
}
CODE: [Copy to clipboard]果然不出我们预料,也是先检查是否支持Native XMLHTTP的。这样一来一旦使用的是IE7,那么IE7的Native XMLHTTP会被启用,我们的程序就会出错啦。/*
Function: getRequestObject
Construct an XMLHttpRequest object dependent on the capabilities
of the browser.
Returns:
object - Javascript XHR object.
*/
if ("undefined" != typeof XMLHttpRequest) {
xajax.tools.getRequestObject = function() {
return new XMLHttpRequest();
}
} else if ("undefined" != typeof ActiveXObject) {
xajax.tools.getRequestObject = function() {
try {
return new ActiveXObject("Msxml2.XMLHTTP.4.0");
} catch (e) {
xajax.tools.getRequestObject = function() {
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e2) {
xajax.tools.getRequestObject = function() {
return new ActiveXObject("Microsoft.XMLHTTP");
}
return xajax.tools.getRequestObject();
}
}
return xajax.tools.getRequestObject();
}
}
} else if (window.createRequest) {
xajax.tools.getRequestObject = function() {
return window.createRequest();
}
} else {
xajax.tools.getRequestObject = function() {
throw { name: 'GetRequestObject', message: 'XMLHttpRequest is not available, xajax is disabled' }
}
}
欢迎光临 网普技术论坛 (http://bbs.netpu.net/) | Powered by Discuz! 2.5 |