我正在编写一个应用程序:
Javascript
JQuery
库。 (我不知道我的代码是否会包含在已经有jquery lib的网页中,我不知道是否会有正确的版本,我不知道是否会有JQuery
冲突所以...)
我必须使用原生的JS
功能XMLHttpRequest(ActiveX for older IE's)
方法进行转发,这很简单,但比我看到警告:
“没有jQuery,AJAX编码可能有点棘手!
编写常规的AJAX代码可能有点棘手,因为它们不同 浏览器具有不同的AJAX实现语法。这意味着 您将不得不编写额外的代码来测试不同的浏览器。 但是,jQuery团队已经为我们处理了这个问题,所以我们可以 用一行代码编写AJAX功能。“
对此有什么'棘手'?我怎么可能做错了?据我所知
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
只是针对不同浏览器的额外代码,我的xmlhttp var应该从现在开始准备好在IE5
,IE6
,IE7+
,Firefox
,{ {1}},Chrome
,Opera
。
是否应该进行跨浏览器代码调整,或者在使用原生Safari
对象时还应该注意什么呢?
答案 0 :(得分:8)
除非您需要支持真正的旧IE(显然使用不同的ActiveXObject),否则这是跨浏览器支持所必需的唯一内容。
然而,使用例如jQuery提供了许多额外的优势:
因为你提到你不能使用jQuery,因为你的应用程序将嵌入到可能与之冲突的另一个站点中:你可以通过包含jQuery然后使用$.noConflict(true)
来恢复旧的{{1}来避免这种情况。 }和$
变量。要在代码中使用它,请按以下方式编写:
jQuery
答案 1 :(得分:0)
XMLHttpRequest对象在此定义为W3C标准:
http://www.w3.org/TR/XMLHttpRequest2/
因此API本身应该在浏览器中保持一致。
正如您所提到的,唯一的变化应该是如何获取XMLHttpRequest对象。见这里:
http://www.quirksmode.org/js/xmlhttp.html
用于跨浏览器,非jQuery的方式(获取对象在他的XMLHttpFactories
数组中完成。