深蓝网络

网站建设,程序开发,主机域名,搜索引擎

Jquery Mobile开启ajax与缓存后的第三方JS插件问题


之前做了企业的移动端WebApp,用Jquery Mobile框架开发的,要求快速开发,所以关闭了全局ajax链接与页面缓存机制,没有发现什么特别的问题。


这次用Jquery Mobile折腾自已的博客程序了,要的就是web站的成本,App的效果,当然要全功能开启啦。结果问题非常多。


JM在开启ajax与缓存后,大量原来程序里的Javascript功能都失效或出错。

原因是除了首次打开页面,之后所有的链接只加载JM的page部分,head部分直接忽略掉了。所以导致很多JS文件无法加载,或加载后也无法运行。不过仔细查看Jquery Mobile的缓存机制后,基本都可以解决掉。但碰到第三方插件时就不是那么好办了。




首先是代码高亮插件Prism不能加载。我的博客程序自带的版本与插件怎么都搞都不行,放head,放body,甚至于放JM的page里都无效。我还试过用异步加载方法。。。最后没办法了,想想现今天异步加载这么流行,去prism官网看看应该有异步加载的方法吧,查询了下果然新版有data-manual手动加载的方案。

下了个新的定制版,然后修改百度的UEditor的代码高亮修改方式。然后放在Jquery Mobile的pageshow事件里加载成功。


碰到的第二个问题是“多说评论”插件。 也是放各种地都不行。不过这次有经验了,直接去官网找异步加载方案。 果然也是有滴。。done. 不过由于博客程序的原有插件机制,也是需要放弃博客原有的一些功能才能顺利运行的。


开启ajax与缓存后还有比较麻烦的地方是,很多HTML元素的ID无法使用了。因为JM缓存后是多页面放在同一个document里,所以会导致多个同名ID同时存在于页面中。必须用class并指定其当前父page才可以。


Jquery Mobile相比于原生的android与IOS开发程序来说,还是弱不少。就拿滑动与上下拉动就反应要慢一些。动作得靠大量的Javascript代码事件监听来实现,做个弹出图片的自由拖动缩放都能把整晕掉。更别提调用微信,QQ等。。。能实现的就一个<tel>的电话调用。



不过呢话说回来,相比普通的移动web站已经炫酷不少了。感觉Jquery Mobile已经很努力了。嘿



上一篇  |  下一篇
发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。