音频、IM类站点,避免因页面跳转而引起的播放停顿、聊天状态丢失等问题。
优点:非前端MVC结构,不影响SEO。改造方便,相对于其他等单页应用框架,学习成本非常低。
不足:基于页面,颗粒度比较大,动效不够细腻。
在已有站点的基础上新增一个页面,这里称之为【主页面】。
在所有页面(不包括主页面),判断浏览者为正常用户,并且不处于iframe中,满足则跳转到【主页面】,其余情况不处理。
在【主页面】中iframer.js
会根据锚点(hash)显示对应的页面,并且调控个页面的链接跳转。
排除的链接:href为javascript::
、javascript:void(0)
、#xxx
。
新窗口打开:不同域名,或包含定义时指定的expect_class
。
其余链接皆纳入iframer单页跳转的逻辑。已处理相对路径的计算。(../../article.html
、article/23.html
)
iframer.js会监听页内跳转,实时修改url、页面title,若跳转到当前域名外(如:auth认证),不实时修改页面地址,规避因为浏览器同源策略引起的错误。