我想知道是否有人能指导我学习如何在不刷新页面的情况下更新页面html和url。
是否有已存在的javascript库来处理这个问题,或者是否有一本好的书籍涵盖了这种东西。
这是一个使用该效果的示例网站。
注意,在更改部分时真实的html以及url也被更新,并且保持平稳的过渡而没有可见的页面刷新。该网站也可以在没有javascript的情况下正常工作。
另外,如果有人看到使用这种方法的任何缺点,请告诉我。
我想知道是否有人能指导我学习如何在不刷新页面的情况下更新页面html和url。
是否有已存在的javascript库来处理这个问题,或者是否有一本好的书籍涵盖了这种东西。
这是一个使用该效果的示例网站。
注意,在更改部分时真实的html以及url也被更新,并且保持平稳的过渡而没有可见的页面刷新。该网站也可以在没有javascript的情况下正常工作。
另外,如果有人看到使用这种方法的任何缺点,请告诉我。
$(".myDiv").load("/myOtherwebpage.html");
您还可以指定来自另一个页面上特定元素的内容:
$(".myDiv").load("/myOtherwebpage.html .myOtherClass");
然而,如果您需要从另一页重新加载所有内容,并将URL更改为不同的页面,则我建议直接链接到该页面。这样做没有通过jQuery获得性能优势。
有一个叫做PushState的技术可以实现这一点。
这是一种较新的技术,大多数最新的浏览器(不包括Internet Explorer :P)都支持。它基本上通过JavaScript改变地址栏。
它可能看起来并不重要,但确实非常好用!通常,您会通过哈希www.example.com#/contact
来实现这一点,例如。
我最近使用这项技术的项目中,我使用了一个名为History.js的js插件,它可以确定您的浏览器是否支持PushState。
根据这个结果,我要么将事件绑定到相关链接,以便进行pushstate和一些ajax,而不是加载新站点,要么让<a href="">
正常工作。
这使得所有浏览器都很高兴。
基本上,我的脚本通过刷新与推送状态和ajax创建相同的结果。
编辑:
只是关于您的那个例子的一个侧面说明。它做得非常聪明 :)
它通过ajax加载新页面并获取其HTML,但如果您再次浏览该页面,则重新显示获取的结果,因此不会进行不必要的ajax调用。