猫窝私语 — Makumo's Blog

玛酷猫的温馨小窝,记录生活点点滴滴。

@玛酷猫11 年前

07/16
16:25
JS&JQUERY

Ajax的收录与history API

虽然google reader已经关闭,但是作为一个重要的学习途径,rss阅读之路还要走下去。

rss上面好东西还是不少的,毕竟还是有不少人还是分享自己的技术知识,今天看到了一篇文章《如何让搜索引擎抓取AJAX内容?》,以前经常在cnbeta上看新闻,就有个疑问,它的首页是不停的用ajax加载的,搜索引擎该如何收录。这篇文章至少提及了一种解决思路。核心就是靠history api来实现。这东东其实并不陌生,工作中经常会用到:

history.back;
history.go(-1);

在HTML4的中,经常使用如下几种方法

  • length:历史堆栈中的记录数。
  • back():返回上一页。
  • forward():前进到下一页。
  • go([delta]):delta是个数字,如果不写或为0,则刷新本页;如果为正数,则前进到相应数目的页面;若为负数,则后退到相应数目的页面。

在HTML5中,又增加了几种用法

  • pushState(data, title [, url]):往历史堆栈的顶部添加一条记录。data为一个对象或null,它会在触发window的popstate事件(window.onpopstate)时,作为参数的state属性传递过去;title为页面的标题,但当前所有浏览器都忽略这个参数;url为页面的URL,不写则为当前页。
  • replaceState(data, title [, url]):更改当前页面的历史记录。参数同上。这种更改并不会去访问该URL。

看完后突发奇想,岂不是这个方法可以用来掩饰钓鱼网站。。在chrome控制台里面试了下,直接报错“Error: SECURITY_ERR: DOM Exception 18”,看来担心是多余的,应该只能在同域名下使用。用这个方法也可以在网站上面搞搞恶作剧,比如做一个好玩的页面,pushState替换成另一个恶搞页面,发给别人,别人不注意再复制转发的话,嘿嘿。再比如Google的20 Things I Learned About Browsers and the Web(需要科学上网),还有这个Eight Equals Equals Dee IN UR URLS(少儿不宜:))

Ajax的收录与history API