用肮脏的办法解决手机端新闻列表异步加载好几页后,需要点进详情然后再跳回又是第一页的问题(别跟我提VUE,老项目了,没法转VUE路由了)

      首先说一下项目问题:当前是传统的MVC的java项目,异步上拉加载新闻,中途假如点进详情,再按手机的返回键,页面回到列表又是第一页了!

本想改造成VUE 但由于项目已经完成,只能硬着头皮去优化。下面直接说肮脏的解决方法:

在列表页添加如下内容:

1.样式(瞎写的,自己优化一下):

<style>
    .iframe {
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        width: 100%;
        height: 100%;
        background: #fff;
        /*overflow-y: hidden;*/
        z-index: 999;
    }
    .ifrom_hide{
        display: none;
    }
    .mengbu{
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        width: 100%;
        height: 100%;
        color: white;
        background: rgba(0,0,0,0.4);
        z-index: 1999;
    }
    .mengbu img{
        width:30px;
        height: 30px;
        display: block;
        margin: 0 auto;
        position: absolute;
        top:47%;
        left:0;
        right: 0;
    }
</style>

2. DOM

<!--这是蒙布-->

<div class="mengbu ifrom_hide">
    <img src="{{asset('static_wechat/images/loading.gif')}}">
</div>

<!--这是用于加载详情页的,把详情页在本页面打开-->
<div id="iframeId" frameborder="0" class="iframe ifrom_hide">
</div>

3. JS (用于:a.设置缓存页为当前页  b.监听返回键并进行操作)

/*
用于列表页中点击详情,为了回退之后不至于重新加载列表而使用,
不改变原结构,但新页面的样式可能会对当前页有影响
 */
    //压入当前页面的空URL***
    state = {
        title: "",
        url: "#"
    };
    //将当前历史设为空
    function do_url(){
        if($('.iframe').hasClass('ifrom_hide')){
            window.history.pushState(state, "title", "#");
        }
    }
    //监听列表页的倒退按键
    window.onpopstate = function(event) {
        if(!$('.iframe').hasClass('ifrom_hide')){
            $('.iframe,.mengbu').addClass('ifrom_hide')
            $('.iframe').html('')
        }else{
            window.history.go(-1)
        }
    };

4. 在你的列表页面,当点击了那一条新闻后,不要让他进行页面跳转,而是在本界面用局部加载的方式来引入

do_url();//第一次清空-设置空的URL#(必须)

// 传入新闻ID 
function open_detail(ID) {

    do_url();//第二次清空-设置空的URL#(必须)

    var url = '/public/XXXXXX?messageid='+ID;
    $('.iframe').load(url)
    $('.mengbu').removeClass('ifrom_hide')
    setTimeout(function(){
        $('.mengbu').addClass('ifrom_hide')
        $('.iframe').removeClass('ifrom_hide')
    },800)

}

5. 局部加载的页面可能会有样式影响列表样式的CSS存在,这个需要根据情况去调整

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的小蜗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值