美文网首页Web前端之路我们就爱程序媛
JavaScript之页面url参数获取

JavaScript之页面url参数获取

作者: 贵在随心 | 来源:发表于2017-09-25 17:47 被阅读398次

    从事web开发,总是缺少不了页面之间的交互,在这个过程中核心是页面 url 参数的传递。那要怎样获取页面中 url 具体的参数呢?
    首先我们先要了解一下 url 的组成,以 http://www.jianshu.com/c/bd38bd199ec6?utm_medium=index-collections&utm_source=desktop#name 为例说明。

    ·protocol 协议:通常是http 协议,本例子显示为:“http”;
    ·host 主机地址:可以是地址,也可以是ip 地址,本例子显示为:“www.jianshu.com”;
    ·port 端口:http 默认端口是:80端口,本例子显示为:80端口;
    ·pathname 路径:网络资源在服务器中的指定路径,本例子显示:“/c/bd38bd199ec6”;
    ·search参数:一般是“?”字符后的字符串,本例子显示为:“?utm_medium=index-collections&utm_source=desktop”;
    ·hash 锚点:一般是“#”后的字符串,指网页中的片段,设置锚点可以直接到达页面指定的位置,本例子显示为:“#name”。

    下面我们来展示一下获取页面 url 具体参数的方法:
    1、设置或获取整个url: window.location.href

    var test = window.location.href;
    alert(test);  // http://www.jianshu.com/c/bd38bd199ec6?utm_medium=index-collections&utm_source=desktop#name
    

    2、设置或获取 url 的 protocol 协议部分:window.location.protocol

    var test = window.location.protocol;
    alert(test);  // http
    

    3、设置或获取 url 的主机名:window.location.host

    var test = window.location.post;
    alert(test);  // www.jianshu.com
    

    4、设置或获取 url 的端口:window.location.port

    var test = window.location.port;
    alert(test);  //空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)
    

    5、设置或获取 url 的路径:window.location.pathname

    var test = window.location.pathname;
    alert(test);  //  /c/bd38bd199ec6
    

    6、设置或获取 url 的参数:window.location.search

    var test = window.location.search;
    alert(test);  //  ?utm_medium=index-collections&utm_source=desktop
    

    7、设置或获取 页面的锚点:window.location.hash

    var test = window.location.hash;
    alert(test);  //  #name
    

    8、JavaScript 获取 url 中的参数
    (1)、正则方法

    function getQueryString(name) {
      var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');  //设置正则匹配规范
      var r = window.location.search.substr(1).match(reg);  // 获取“?”后的字符串并正则匹配
      if (r != null) {
        return decodeURIComponent(r[2]); // 解码参数部分
      }
      return null;
    }
    

    (2)、split拆分法

    function getRequest() {
      var url = window.location.search; 
      var theRequest = new Object();
      if(url.indexof != -1) { //判断是否有参数
        var str = url.substr(1);  //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
        strs = str.split("&");  //截除“&”生成一个数组
        var i = 0, len = strs.length;
        for(i = 0; i < len; i++) {
          theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);  
        }
      }
      console.log(theRequest);
    }
    getRequest(); // {utm_medium: "index-collections", utm_source: "desktop"}
    

    (3)获取指定参数的值

    function getQueryString(name) {
      var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
      var r = window.location.search.substr(1).match(reg);
      var context = '';
      if (r != null) {
        context = r[2];
      }
      reg = null; 
      r = null; 
      return context == null || context == "" || context == "undefined" ? "" : context; 
    }
    getQueryString("utm_medium");  // "index-collections"
    

    (4)、单个参数的获取

    function GetRequest() {
      var url = location.search; 
      if (url.indexOf("?") != -1) {  
       var str = url.substr(1); 
       strs = str.split("=");  
       console.log(strs[1]);     
      }
    }
    GetRequest(); // index-collections&utm_source
    

    戳我博客

    相关文章

      网友评论

        本文标题:JavaScript之页面url参数获取

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