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;
- },
- 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))
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(查询部分) |