zoukankan      html  css  js  c++  java
  • js修改url参数,无刷新更换页面url

    一、js修改地址栏URL参数

        function changeURLPar(destiny, par, par_value) {
                var pattern = par + '=([^&]*)';
                var replaceText = par + '=' + par_value;
                if (destiny.match(pattern)) {
                    var tmp = '/\' + par + '=[^&]*/';
                    tmp = destiny.replace(eval(tmp), replaceText);
                    return (tmp);
                }
                else {
                    if (destiny.match('[?]')) {
                        return destiny + '&' + replaceText;
                    }
                    else {
                        return destiny + '?' + replaceText;
                    }
                }
                return destiny + '
    ' + par + '
    ' + par_value;
            }

    destiny是目标字符串,比如是http://www.huistd.com/?id=3&ttt=3 
    par是参数名,par_value是参数要更改的值,调用结果如下: 
    changeURLPar(test, 'id', 99); // http://www.huistd.com/?id=99&ttt=3 
    changeURLPar(test, 'haha', 33); // http://www.huistd.com/?id=99&ttt=3&haha=33 

    二、无刷新更换页面url

     var url = document.URL,   //获取当前页面的网址信息
         URL;
     var num = url.indexOf('#');  //获取#在的位置信息
        if (num){
               URL = url.substring(0,num);  //截取网址信息
               history.pushState(null,null,URL);  //将网址设置
          }
    方法:window.history.pushState(state, title, url)
    • state:一个与添加的记录相关联的状态对象,主要用于popstate事件。该事件触发时,该对象会传入回调函数。也就是说,浏览器会将这个对象序列化以后保留在本地,重新载入这个页面的时候,可以拿到这个对象。如果不需要这个对象,此处可以填null
    • title:新页面的标题。但是,现在所有浏览器都忽视这个参数,所以这里可以填空字符串。
    • url:新的网址,必须与当前页面处在同一个域。浏览器的地址栏将显示这个网址。
     
  • 相关阅读:
    AtCoder Regular Contest 093
    AtCoder Regular Contest 094
    G. Gangsters in Central City
    HGOI 20190711 题解
    HGOI20190710 题解
    HGOI 20190709 题解
    HGOI 20190708 题解
    HGOI20190707 题解
    HGOI20190706 题解
    HGOI 20190705 题解
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/9776764.html
Copyright © 2011-2022 走看看