将jquery ajax转换为标准的javascript

时间:2011-06-14 19:18:14

标签: javascript jquery

Jquery非常沉重和臃肿。不幸的是我不知道如何编写“真正的”javascript代码。

我有这段代码:

$(document).ready(function () {
    if(window.navigator.standalone){
        $('a').click(function(e) {
            e.preventDefault();
            $("body").load(this.href);
        });
    }
}); 

有人可以帮助我将其转换为真正的javascript吗? 我将如何替换load()?非常感谢:)

2 个答案:

答案 0 :(得分:3)

不是非常复杂:

window.onload= function() {
    if (!navigator.standalone) return;
    for (var i= document.links.length; i-->0;) {
        document.links[i].onclick= function() {
            var req= new XMLHttpRequest();
            req.onreadystatechange= function() {
                if (this.readyState!==4) return;
                document.body.innerHTML= this.responseText;
            };
            req.open('GET', this.href, true);
            req.send();
            return false;
        };
    }
};

要使XMLHttpRequest在IE6上运行,如果您完全关心它,您需要首先定义它:

if (!window.XMLHttpRequest && 'ActiveXObject' in window) {
    window.XMLHttpRequest= function() {
       return new ActiveXObject('MSXML2.XMLHttp');
    };
}

这就是它的全部内容。

但是对于通用网页,你永远不应该这样做;不是在本机JavaScript中而是在jQuery中。将load内容嵌入到现有页面中会颠覆浏览器的导航功能,并将其替换为空。后退和前进按钮现在不再起作用了。用户无法为自己喜欢的页面添加书签,也无法向其他人发送链接。这是对帧的最差可用性问题的重新发明,不应该在开放的网络上完成,而不需要为搜索引擎实现HTML5历史导航和hashbang后备导航而进行大量额外工作。

答案 1 :(得分:2)

不是jQuery 真正的javascript 吗?如果你的意思是没有任何框架的原始javascript,那么你需要一个XmlHttpRequest(准备自己编写大量的代码,也准备好自己的代码在不同的浏览器之间不相同,得到错误,头痛等......) 。

结论:使用jQuery并感到高兴。