url取值的两种方式

传参

window.open('http://www.baidu.com?query=11&&query2==22','_blank')

获取参数

方法一:采用正则表达式获取地址栏参数

function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null)return unescape(r[2]); return null;
}

此方法如果? 前有 #  则获取不到 window.location.search,search只能取到?之后   #之前的内容

方法二

GetQueryString() {
      let data = {}
      let src = window.location.href
      let index = src.indexOf("?");
      if (index === -1) {
        return data;
      }
      let dataStr = src.substring(src.indexOf("?") + 1);
      let dataArray = dataStr.split("&");
      dataArray.forEach((str) => {
        let param = str.split("=");
        data[param[0]] = param[1];
      });
      return data;
    },

url传参包含对象 

encodeURIComponent:地址栏有特殊字符进行编码
当地址栏有"%"号时需要正则替换掉   不然在解码页面会报错:URI malformed报错
  let url = `http://www.baidu.com?info=${encodeURIComponent(JSON.stringify(info))}`;
            console.log('url1111', url);
            if (url.indexOf('%') > -1) {
              url = url.replace(/%/g, '%25');
            } // 解决URI malformed报错的bug

解析

JSON.parse(decodeURIComponent(option.info))

url传参长度问题

Microsoft Internet Explorer (Browser)
IE浏览器对URL的最大限制为2083个字符,如果超过这个数字,提交按钮没有任何反应。

Firefox (Browser)
对于Firefox浏览器URL的长度限制为65,536个字符,但当我测试时,最大只能处理8182个字符,这是因为url的长度除了浏览器限制外,还会受Web服务器的限制。

Safari (Browser)
URL最大长度限制为 80,000个字符。

Opera (Browser)
URL最大长度限制为190,000个字符。

Google (chrome)
url最大长度限制为8182个字符

如果最大长度限制为2038字符,是不是参数差不多可以传递1000个左右的汉字。这样认为其实是不对的,对于中文的传递,最终会为urlencode后的编码形式进行传递,如果浏览器的编码为UTF8的话,一个汉字最终编码后的字符长度为9个字符。

PS:window.location   对象所包含属性

属性描述
hash从井号 (#) 开始的 URL(锚)
host主机名和当前 URL 的端口号
hostname当前 URL 的主机名
href完整的 URL
pathname当前 URL 的路径部分
port当前 URL 的端口号
protocol当前 URL 的协议
search从问号 (?) 开始的 URL(查询部分)

参考   https://www.jianshu.com/p/12c90ff374f4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值