美文网首页
pushState+ajax实现左菜单右动态页面内容

pushState+ajax实现左菜单右动态页面内容

作者: 1024前端喵 | 来源:发表于2018-09-20 15:30 被阅读0次

    以前都用iframe做左面菜单右面页面的切换,但是iframe不仅比较老化而且漏洞比较多比较麻烦,所以网上找了很多代替的办法,发现ajax不错,但是纯ajax做又少了前进后退的功能,所以需要结合HTML5的pushState,来实现前进与后退的功能,用ajax来实现也许还会有别的坑,但是目前还没有发现,等发现会继续总结

    结合例子来学会这个功能,参考的网站https://blog.csdn.net/DecadentF/article/details/77982511

    html代码

    <!--两个菜单按钮,阻止a跳转,按钮中有点击事件,事件将网页名称封装为参数-->
    <div class=""><a href="javascript:;" onclick="turnpage('rates')">待评价</a></div>
    <div class=""><a href="javascript:;" onclick="turnpage('rated')">已评价</a></div>
    
    <!--ajax加载的内容区域-->
    <div class="mainbox">
                        
    </div>
    

    jq代码

    window.onload = function(){ //页面刚加载或刷新时
            var url0 = document.URL;    //获取地址栏
        var num = url0.indexOf('?');    //判断有没有?
        var oldurl;
        var loadurl = num==-1?"rates":url0.slice(num+1, url0.length)
            //没有?加载指定页面,有?加载?后面的
        ajax1(loadurl)
    }
    window.onpopstate = function(event) {   //前进后退事件
        if(event.state == null){  //如果没有state,退到最后了就不再退
            return
        }else{
            ajax1(event.state.urld)  //否则就退
        }
    };
    function turnpage(url) {    //点击加载页面
        var url0 = document.URL;    //获取地址栏
        var num = url0.indexOf('?');    //判断有没有?
        var oldurl;
        if(num == -1) { //没有?oldurl为整个地址栏内容
            oldurl = url0;
        } else {
            oldurl = url0.slice(0, num);    //有?oldurl为?之前的
        }
        var newurl = oldurl + '?' + url;    //根据点击的重新拼接url
        if(url0==newurl)return false;   //如果重复点击同一链接不重复加载
        history.pushState({id:"5",title:"123",urld:url}, "标题", newurl);
        ajax1(url)
    }
    function ajax1(url){    //封装的ajax
        $.ajax({    //点击菜单时加载相应页面
            type: "get",
            url: url+'.html',
            success: function(html) {
                $('.mainbox').html(html);
            }
        });
    }
    

    相关文章

      网友评论

          本文标题:pushState+ajax实现左菜单右动态页面内容

          本文链接:https://www.haomeiwen.com/subject/gahnnftx.html