使用Google的UI的时候,在当前页面打开一个超链接,网页会根据需要进行局部刷新,而不是替换整个页面。当用户选择新窗口打开超链接的时候,超链接仍然可以到达预想的页面。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>A Click Event Test</title>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(function(){
/* 点击事件会在超链接跳转前发生 */
$("#div_test a").click(function(){
var link = $(this).attr('href');
$('#div_view').attr('src', link);
var href = window.location.href;
window.location.href = href.substr(0, href.indexOf('#')) + '#' + link;
return false;
});
});
</script>
</head>
<body>
<div id="div_test">
<ol>
<li><a href="http://xiaoxia.org">xiaoxia</a></li>
<li><a href="http://www.ibaiyang.org">ibaiyang</a></li>
<li><a href="http://www.xiaoxins.com">xiaoxins.com</a></li>
</ol>
</div>
<iframe id="div_view" width="100%"></iframe>
</body>
</html>
这只是我用jQuery做的一个测试,不知道Google是怎么实现的。例如,当点击一个超链接事件之后,页面通过iframe来进行局部刷新。而此时浏览器的地址栏应该会发生变化,这个如何改动呢?
我目前是通过修改 window.location 来使地址发生改变的,但是我只能改变#符号后面的内容吧。如果前面的内容也变了,可能会导致浏览器刷新整个页面?
求赐教!

Google 「pushState」
github 和 bitbucket 在用这个,Google+ 也在用。
局部刷新会不会是用的ajax呢?
可以!只是我这个例子里用的是frame而已。
ajax请求好像有域限制!
给链接一个onclick 就行吧
是的,我现在也是这么做的 🙂
click里应该是刷新iframe的src 而不是 windows的
这是HTML5的特性,js可以截获浏览器的导航事件
以往我们是使用URL的hash来达到类似的效果的,但现在html5有导航相关的事件和接口了
最典型的应用就是Chrome Web Store,地址直接是个url,不带hash
嗯,可以使用locaiton.hash,具体html5关于导航的东西,哪里有相关资料方便学习呢?
http://www.keakon.net/2011/04/04/HTML5%20history%20API%E4%BB%8B%E7%BB%8D
这里
一直默默的关注。下虾怎么会懂这么多呢?
昨晚要用,昨天才去研究的 🙂
刚才打错了个字,sorry 🙂
学习了,赞之~同样好奇google怎么做到的,求教导。对了虾哥,你讲Tornado相册的那篇文章里的那个相册建议你对特殊目录做些过滤,比如wp-admin让心怀不轨的家伙知道可能会干坏事啊。还有建议虾哥的wp后台加个验证码什么的,不然有可能爆破呢。
那个相册只能对jpg文件服务的,应该干不了坏事。
密码爆破可能性比较少吧,我的密码够8位了,也有标点符号 😛
唉,为什么不回复我呢。我给出了正解啊~
🙁 Sorry, 把你给你忽略了!!! 谢谢你的建议,哈哈~