项目背景
针对用Sencha touch 1.1开发的一个用于通过ipad浏览的网站(其实是对PC端一个网站的映射)中的一个模块的开发,这个模块的主要功能就是用户浏览各种‘报告’,这些被阅览的‘报告’,其实是各种形式的文档,有word,ppt,xls, csv,pdf等,当然还包括一些视频文件
需求描述
用户登录网站,然后浏览所有报告的列表,如果想看其中某一个就点击打开查看,当用户点击其中一个文件名时,就在浏览器中打开一个新的标签加载(其实就是当用户点击的时候去下载被点击的文档)文档内容
开发过程
其实是没有什么难度的开发,但是却没想到在开发过程中遇到了不小的麻烦,在ipad上的safari中以上需求都能够满足,可没想到将这个网站通过safari 的“at home Screen"(就是添加快捷方式到桌面)时,通过快捷方式进入网站后点击文档列表中的每一项都不能跳转到safari中去打开文档了,先解释一下,通过快捷方式打开网站,此时就像打开的一个app应用,没有地址栏,也就是完全看不出是在浏览器一样,这点和在pc上浏览网站时按F11全屏一样,
因为刚接触ipad 实在不知道怎么办,于是上网查,终于找到了解决方法,所有报告的列表页,每一个报告名字就是一个a标签,当点击报告名字时,会从数据库下载文档到服务器,然后将文档路径赋值给a标签的href属性,结果在浏览器中打开一个新标签,文档打开,就是这么简单,问题就出在最后a标签没有跳转,解决办法就是再给a标签href属性赋值后,要按如下写才可以跳转走:
var e = document.createEvent('MouseEvent'); e.initEvent('click', false, false); setTimeout(a.dispatchEvent(e), 2000);
当时处理这个问题时ios的版本是6,苹果还没有出iso7,这样的解决方案在iso7一下是可行的,但到了iso7就不行了,又没效果了,网上也没有找到解决方法,自己想吧。
终于天不负有心人,撞到墙了,果断改变思路,以前是点击文档名时去下载文档然后打开文档,现在不如先跳转,实验证明如果a标签这样写
<a href="http://www.cnblogs.com/" target="_blank" />
是没有问题的,可以正常工作,那么我不如不管用户点击哪一个文档,都先在浏览器中打开一个空白页(当然也不是完全空白,有一个加载图标,显示正在加载文档),然后在空白页中下载文档,获得文档路径后用
location.replace(文档路径);
就行了,
这样做,不管什么系统版本的ipad都可以正常打开报告了。