Jquery中使用$.mobile.changePage()导致无法加载js的问题,使用js的方法代替处理

第1部分:使用场景

华仔在web前端开发的过程中,语言使用的是JavaScript,框架涉及Jquery

期间免不了使用界面切换,这次大部分采用的是Jquery中的$.mobile.changePage()方法,

但是发现一个问题,那就是在成功切换了页面后,新页面的JavaScript代码并没有执行,

导致该页面的数据信息还是上次看到的结果。

因此严重影响了体验。

第2部分:解决方案

在网络上搜寻了一下解决方案,部分人给出是在data-role=’page’ 标签中添加data-ajax=”false”,该方法我测试无效。

还有部分人提示是否跨域,检查后前后网址一致,不存在跨域的情况。

然后就只能按照JavaScript的方式,来打包一个function解决,说实话,这个方式以前我用过,但是由于原来的简单代码包含了固定url前缀,

不适用于我给不同客户的不同域名部署改网页,所以此次决定使用$.mobile.changePage()方法,没想到又出现这个情况。

下面是华仔造轮子缓解

function jump(href) {
 var Thishref = window.location.href;//获取当前页面的完整url
 var pathname = window.location.pathname;//获取当前页面的page名
 var Path = Thishref.replace(pathname, '');//替换得到无page名的url
 location.href = Path +'/'+ href;//进行跳转
}

通过调用上面这个方法,就可以很好的解决$.mobile.changePage()导致无法加载js的问题

上面的这个代码经过测试,还是存在问题,

主要是window.location.pathname并非代表当前page的名称,

而是除了域名以外的完整路径,比如https://www.huazai186.com/post/46.html

返回的是post/46.html,

所以还需要再改写上面这段代码:

function jump(href) {
  var Thishref = window.location.href;
  var pathname = window.location.pathname;
  var patharr = pathname.split('/');
  var myPagename = patharr[patharr.length - 1];
  var Path = Thishref.replace(myPagename, '');
  location.href = Path + href;
}

该教程到此结束。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容