关于pjax 如何设置不缓存加载页面里面的js文件和不修改浏览器中的URL地址

关于pjax 如何设置不缓存加载页面里面的js文件和不修改浏览器中的URL地址

pjax 是什么?
推荐博客: http://www.jianshu.com/p/557cad38e7dd

最近搞了一个后端管理系统练练手,系统界面是通用的 [左边菜单列表、中间加载菜单URL内容] 结构。
采用pjax技术 加载菜单中url对应的网页内容,pjax会动态修改浏览器URL地址内容,也会缓存加载的页面里面的js文件。一般这些文件都可能有类似于如下的初始化js代码:$(function(){ 一些初始化内容 }); ,如果缓存了js文件则再次点击菜单时这些初始化代码将不会执行,这可能会导致一些页面异常情况。

根据前端工程师指导直接修改 pjax源码文件 jquery.pjax.js, 很简单的修改,共三点地方:

......

// Gather all script[src] elements
// 注释掉下面的两行就能保证每次都加载页面的时候 也重新加载页面里面的js文件
// obj.scripts = findAll(obj.contents, 'script[src]').remove()
// obj.contents = obj.contents.not(obj.scripts)

 ......

if (options.push && !options.replace) {
  // Cache current container element before replacing it
  cachePush(pjax.state.id, [options.container, cloneContents(context)])
  // 这边添加一行代码,表示无论点击那个菜单,url地址栏始终在 main.html
   options.requestUrl = '/pages/main.html';

  window.history.pushState(null, "", options.requestUrl)
}

猜你喜欢

转载自blog.csdn.net/gzt19881123/article/details/78233981