用replaceState操作路由的方法封装

2018-06-24 01:36:45来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

export class Router {
    ReplaceState(url, data) {
        var query = this.Generate(data);
        window.history.replaceState(url, "", query)
    }

    /**
     * 生成url
     */
    Generate(data) {
        var search = "?";
        for (var temp in data) {
            search += `${temp}=${data[temp]}&`;
        }
        search = search.substr(0, search.length - 1);
        return search;
    }

    /**
     * 解析search 
     */
    UrlSearch(key) {
        var search = window.location.search;
        if (search) {
            var searchObject = {};
            var queries = search.replace(/^\?/, '').split('&');
            for (var i = 0; i < queries.length; i++) {
                var split = queries[i].split('=');
                if (split[0] != "" && split[1] !== undefined) {
                    searchObject[split[0]] = decodeURIComponent(split[1]);
                }
            }
            return searchObject[key];
        } else {
            return "";
        }
    }

}

使用例子:

  添加:

    在window.location.href后加上a=1和b=2。

Router.prototype.ReplaceState(window.location.href, {a:1,b:2});

    修改之后将会变成xxxxxxxxxx?a=1&b=2。

  获取参数:

Router.prototype.UrlSearch("a");

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:javascript 函数详解

下一篇:ES6新增的常用数组方法(forEach,map,filter,every,some)