• url取值的两种方式


    传参

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

    获取参数

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

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

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

    方法二

    1. GetQueryString() {
    2. let data = {}
    3. let src = window.location.href
    4. let index = src.indexOf("?");
    5. if (index === -1) {
    6. return data;
    7. }
    8. let dataStr = src.substring(src.indexOf("?") + 1);
    9. let dataArray = dataStr.split("&");
    10. dataArray.forEach((str) => {
    11. let param = str.split("=");
    12. data[param[0]] = param[1];
    13. });
    14. return data;
    15. },

    url传参包含对象 

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

  • 相关阅读:
    Linux三剑客sed之增删改查
    [stm32]温湿度采集与OLED显示
    Python数据挖掘:入门、进阶与实用案例分析——基于非侵入式负荷检测与分解的电力数据挖掘
    leetcode 2560. 打家劫舍 IV
    STM32的HAL库及其使用
    飞天使-k8s基础组件分析-安全
    行为学派 进化计算
    NISP二级证书换CISP证书是怎么回事?
    约束(constraint)
    Hadoop、Hive安装
  • 原文地址:https://blog.csdn.net/qq_38990521/article/details/127393332