2011-06-14 48 views
1

jquery非常沉重和臃肿。不幸的是,我不知道如何编写“真正的”JavaScript代码。将jquery ajax转换为标准javascript

我有这样的代码:

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

有人能帮助我一起变身为真正的JavaScript这种方式? 我将如何替换负载()?非常感谢:)

+6

如果您发现jquery臃肿,请等待,看看您的“真实”javascript会是什么样,一旦适用于所有平台上运行:) – pixeline 2011-06-14 19:21:32

回答

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; 
     }; 
    } 
}; 

如果要对IE6 XMLHttpRequest的工作,如果这是你所关心的一切,你需要先定义此:

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

这真的有就是这样。

但是,对于通用的网页,你不应该这样做;不在本地JavaScript中,也不在jQuery中。将内容添加到现有页面中会破坏浏览器的导航功能,并将其替换为空白。后退和前进按钮现在不再工作。用户不能为他们喜欢的页面添加书签,或将链接发送给其他人。这是对帧最糟糕的可用性问题的重新发明,不应该在开放的网络上完成,而不需要额外的工作来为搜索引擎实现HTML5历史导航和hashbang后备导航。

+0

我会谨慎反对在“你永远不应该做这个”评论中投入太多股票。有很多情况下你想要加载额外的内容,而无需重新加载整个页面。在加载全新内容时,历史是相关的,但在加载评论,详细信息,附加图像等内容时可能没有那么多。 – 2011-06-14 20:03:08

+1

我不知道,我希望能够链接到评论或特定的细节;向某人发送一个说明“http://www.example.com/”的“链接”,然后点击“打开详细信息”,然后打开第三个评论“吸引”。有一种很好的方法可以通过脚本来处理,但它涉及到一些棘手的历史和hashbang代码(或者一个可以帮你实现的插件)。大多数人不会为此而困扰,并以不可访问的页面结束。 – bobince 2011-06-14 20:07:38

+0

这里只适用于iphone上的全屏视图:)。所以没有导航,这就是为什么有“navigator.standalone”。 – cmplieger 2011-06-14 21:29:04

2

是不是jQuery 真正的javascript你?如果你的意思是没有任何框架的原始JavaScript,那么你需要一个XmlHttpRequest(准备自己编写绝对数量的代码,也准备好让这些代码在不同浏览器中工作不一致,获得错误,头痛等)。

结论:使用jQuery并很开心。

+2

是的我的意思是原始的JavaScript。这是一个移动框架。而只是添加jQuery的5行是在我看来有点愚蠢:)。 – cmplieger 2011-06-14 19:21:55

+0

感谢您的链接,我会看看:) – cmplieger 2011-06-14 19:22:08

+0

@SnippetSpace,5行???相信我,如果你不使用jQuery,那么等待你的是真正的恐怖:-)我们都经历过它。一旦你经历了它,你可能会很欣赏人们为创建js框架(如jQuery)所做的努力。如果您担心性能或其他问题,请从Google CDN提供服务,但客户已将其缓存起来并且无需重新下载,因为许多网站已将其用于此目的。 – 2011-06-14 19:22:57