您当前的位置:首页 > 计算机 > 编程开发 > JavaScript

SUI Mobile 异步 AJAX 加载页面执行 JavaScript 脚本

时间:12-14来源:作者:点击数:

SUI Mobile 是一个比较好用的移动端开发框架,里面包含了很多个组件,几乎涵盖了手机端的基本特效,其自带的 路由 功能简直用起来不要太爽,这也是我一直使用它的原因。

SUI Mobile 异步 AJAX 异步加载页面执行 JavaScript 脚本

不过再好的插件也有一些 缺点,或者说这并不是 SUI Mobile 的缺点,只是框架的约定和我们以往编写代码的方式有点不同,其实你能想到的问题,框架的作者也基本想到了,可能在开发文档里面没有写明。

SUI Mobile 的路由功能,能够在当前页面 异步加载 另外的页面,不需要我们做任何配置,框架给我们自动完成,只要两个页面都遵循框架的格式编写,那就基本没有问题。

这里就会遇到一个经常遇到的问题,那就是异步加载的 JS 会不执行,其实这个问题早在 SUI Mobile 的常见问题里面提到,作者也给出了相应的解决方法,但是可能很多开发者不知道到底该怎么写。

切换到的新页面中的 js 不执行

由于浏览器安全性考虑的限制以及可能的 js 重复执行或覆盖的问题,目前是不支持运行 ajax 载入的页面里面的 js 的。

解决方法:所有页面都引用相同的 js,而这个 js 里面包含了所有的逻辑,事件部分使用委托来绑定。

SUI Mobile 官方有一个示例,细心的朋友可能会发现,里面也是通过路由加载页面,但是里面的一些JS插件照样能够执行,仔细看看作者写的 DEMO 就能明白怎么回事。

作者是将所有的 JS 事件都写到一个文件里面,然后每个页面都引用,这样所有的页面都是相同的执行脚本,然后通过给每个页面设置不同的页面 ID,然后判断改执行那段 JS 脚本。

$(document).on("pageInit", "#page-flow-picker", function(e, id, page) {
    $("#datetime-picker").datetimePicker({
      toolbarTemplate: '<header class="bar bar-nav">\
      <button class="button button-link pull-right close-picker">确定</button>\
      <h1 class="title">选择日期和时间</h1>\
      </header>'
    });
});

#page-flow-picker 就是需要被加载页面的PageID,给根元素绑定一个页面初始化完成的事件,也就是SUI的加载事件,完成以后执行下面的代码。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐