AJAX 网页保留浏览器前进后退等功能
2011-02-12 12:37
465 查看
AJAX的应用较少了页面的刷新次数,但是也可能会使浏览器的前进、后退、刷新等功能受到影响。在一些AJAX被大量使用的页面,有时都不太敢刷新,因为刷新以后可能看到的是和原来有很大不同的页面。暂不讨论在某些页面内容大量更新的情况下是否该使用AJAX的问题,本文简单说一下保留浏览器前进、后退、刷新等功能。
这里假设一个有两个Tabs的页面,每个Tab中含有大量文字,可能还有图片。如果现在觉得Tab2的内容很好,把它加入收藏夹或发送给朋友。下次通过收藏夹打开或者朋友点开这个链接的时候很有可能看到的是Tab1的内容,然后需要鼠标再次点击Tab2才看到想要看的内容。如果页面逻辑更为复杂,则可能要进行多步操作才能回到希望看的内容,这样的体验不太好。
要使刷新、加入收藏夹等功能正常使用,需要让当前的操作在URI上有所体现。但是改变URI的同时又不能引起页面的刷新,因此可以通过改变URI中的片段(fragment)来实现。例如,点击Tab1后将URI改为http://www.example.com/example.html#tab1,点击Tab2则将URI改为http://www.example.com/example.html#tab2。
代码
1 function ShowTab1() {
2 $("#tab2").hide();
3 $("#tab1").show();
4 window.location.hash = "#tab1";
5 };
6 function ShowTab2() {
7 $("#tab1").hide();
8 $("#tab2").show();
9 window.location.hash = "#tab2";
10 };
这样做已经使得URI产生了变化,但是无论通过http://www.example.com/example.html#tab1还是http://www.example.com/example.html#tab2访问页面都是显示Tab1的内容,所以还需要在页面载入时读取#后的内容。
1 $(document).ready(ShowTab());
2 function ShowTab() {
3 if (window.location.hash == "#tab2")
4 ShowTab2();
5 else
6 ShowTab1();
7
8 }
这样,刷新和加入收藏夹等功能都已经可以使用了,不过前进和后退还是会有麻烦。虽然这两个按钮已经变得可用,但是点击时网页的内容并没有发生变化。我们需要用到body的onhashchange事件。onhashchange事件并不是所有浏览器都支持的,如果要使不支持该事件的浏览器也检测#后内容的变化,可能需要写一个函数定期检测window.location.hash的变化或者自己实现onhashchange事件。
示例下载 (Visual Studio 2010)
这里假设一个有两个Tabs的页面,每个Tab中含有大量文字,可能还有图片。如果现在觉得Tab2的内容很好,把它加入收藏夹或发送给朋友。下次通过收藏夹打开或者朋友点开这个链接的时候很有可能看到的是Tab1的内容,然后需要鼠标再次点击Tab2才看到想要看的内容。如果页面逻辑更为复杂,则可能要进行多步操作才能回到希望看的内容,这样的体验不太好。
要使刷新、加入收藏夹等功能正常使用,需要让当前的操作在URI上有所体现。但是改变URI的同时又不能引起页面的刷新,因此可以通过改变URI中的片段(fragment)来实现。例如,点击Tab1后将URI改为http://www.example.com/example.html#tab1,点击Tab2则将URI改为http://www.example.com/example.html#tab2。
代码
1 function ShowTab1() {
2 $("#tab2").hide();
3 $("#tab1").show();
4 window.location.hash = "#tab1";
5 };
6 function ShowTab2() {
7 $("#tab1").hide();
8 $("#tab2").show();
9 window.location.hash = "#tab2";
10 };
这样做已经使得URI产生了变化,但是无论通过http://www.example.com/example.html#tab1还是http://www.example.com/example.html#tab2访问页面都是显示Tab1的内容,所以还需要在页面载入时读取#后的内容。
1 $(document).ready(ShowTab());
2 function ShowTab() {
3 if (window.location.hash == "#tab2")
4 ShowTab2();
5 else
6 ShowTab1();
7
8 }
这样,刷新和加入收藏夹等功能都已经可以使用了,不过前进和后退还是会有麻烦。虽然这两个按钮已经变得可用,但是点击时网页的内容并没有发生变化。我们需要用到body的onhashchange事件。onhashchange事件并不是所有浏览器都支持的,如果要使不支持该事件的浏览器也检测#后内容的变化,可能需要写一个函数定期检测window.location.hash的变化或者自己实现onhashchange事件。
示例下载 (Visual Studio 2010)
相关文章推荐
- AJAX 网页保留浏览器前进后退等功能
- AJAX 网页保留浏览器前进后退等功能
- AJAX 网页保留浏览器前进后退等功能
- 如何让浏览器支持jquery ajax load 前进、后退功能
- 让浏览器支持 jquery ajax load 前进、后退 功能
- 基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
- 让浏览器支持 jquery ajax load 前进、后退 功能
- 一个简单的样例看明确怎样利用window.location.hash实现ajax操作时浏览器的前进/后退功能
- 一个简单的例子看明白如何利用window.location.hash实现ajax操作时浏览器的前进/后退功能
- location的hash部分和使用window.onhashchange实现ajax请求内容时使用浏览器后退和前进功能
- 几种方法实现ajax请求内容时使用浏览器后退和前进功能
- 如何让浏览器支持jquery ajax load 前进、后退功能
- 一个简单的例子看明白如何利用window.location.hash实现ajax操作时浏览器的前进/后退功能
- 几种方法实现ajax请求内容时使用浏览器后退和前进功能
- 开发保留标准浏览器功能的AJAX应用程序
- 开发保留标准的浏览器功能的AJAX应用
- Windows Phone 7 浏览器控件(WebBrowser) 支持历史记录,前进,后退,刷新。等功能
- JAVA编写的浏览器,在别人的基础上做了些许修改,实现了前进,后退,刷新功能,添加了一个搜索框,具体情况在运行结果中的文件-->注意中
- JavaScript不刷新实现浏览器的前进后退功能