BOM location对象详解

简介: BOM location对象详解

location对象


location对象是window对象下的一个属性,用的时候可以省略window对象


location可以获取或者设置浏览器地址栏的URL



<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
  <script>
    //对象中的属性和方法
    //location对象
    console.log(window.location);
   //地址栏上#及后面的内容
   console.log(window.location.hash);
   //主机名及端口号
   console.log(window.location.host);
   //主机名
   console.log(window.location.hostname);
   //文件的路径---相对路径
   console.log(window.location.pathname);
   //端口号
   console.log(window.location.port);
   //协议
   console.log(window.location.protocol);
   //搜索的内容
   console.log(window.location.search);
    onload=function () {
      document.getElementById("btn").onclick=function () {
        // 设置跳转的页面的地址
       location.href="http://www.jd.com";//属性----------------->必须记住
       location.assign("http://www.jd.com");//方法
        location.reload();//重新加载--刷新
        location.replace("http://www.jd.com");//没有历史记录
      };
    };
  </script>
</head>
<body>
<input type="button" value="显示效果" id="btn"/>
</body>
</html>


URL


统一资源定位符 (Uniform Resource Locator, URL)


  • URL的组成


scheme://host:port/path?query#fragment
scheme:通信协议
  常用的http,ftp,maito等
host:主机
  服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。
port:端口号
  整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
path:路径
  由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
query:查询
  可选,用于给动态网页传递参数,可有多个参数,用'&'符号隔开,每个参数的名和值用'='符号隔开。例如:name=zs
fragment:信息片断
  字符串,锚点.


location有哪些成员?


  • 使用chrome的控制台查看


  • 查MDN


MDN


  • 成员


  • assign()/reload()/replace()


  • hash/host/hostname/search/href……


案例


解析URL中的query,并返回对象的形式


function getQuery(queryStr) {
  var query = {};
  if (queryStr.indexOf('?') > -1) {
    var index = queryStr.indexOf('?');
    queryStr = queryStr.substr(index + 1);
    var array = queryStr.split('&');
    for (var i = 0; i < array.length; i++) {
      var tmpArr = array[i].split('=');
      if (tmpArr.length === 2) {
        query[tmpArr[0]] = tmpArr[1];
      }
    }
  }
  return query;
}
console.log(getQuery(location.search));
console.log(getQuery(location.href));
相关文章
|
消息中间件 架构师 Java
史上最细最强大的RocketMQ实现分布式事务解决方案教程|Java 开发实战(上)
史上最细最强大的RocketMQ实现分布式事务解决方案教程|Java 开发实战
1128 0
史上最细最强大的RocketMQ实现分布式事务解决方案教程|Java 开发实战(上)
|
机器学习/深度学习 PyTorch 算法框架/工具
【机器学习】Softmax回归探索
【机器学习】Softmax回归探索
600 8
C++ 过滤出字符串的中文(GBK,UTF-8)
C++ 过滤出字符串的中文(GBK,UTF-8)最近在处理游戏敏感词之类的东西,为了加强屏蔽处理,所以需要过滤掉字符串中的除汉字之外的是其他东西如数字,符号,英文字母等。 首先我查阅资料并写了个函数: 示例:返回输入字符串中汉字的个数: 复制代码std::string StrWithOutSymb...
5044 0
|
人工智能 弹性计算 数据安全/隐私保护
如何在阿里云快速启动Stable Diffusion轻松玩转AI绘画
本文介绍如何如何在阿里云快速启动Stable Diffusion服务开启AI绘画
如何在阿里云快速启动Stable Diffusion轻松玩转AI绘画
|
Java
leetcode-763:划分字母区间
leetcode-763:划分字母区间
149 0
|
弹性计算 Ubuntu 安全
在倚天ARM版云服务器ECS上使用 HestiaCP 进行图形化建站
随着 Apple Silicon 版本的 Mac 发布后,大家越来越看到了非 X86 的 ARM 架构的潜力,AWS 家的 Graviton 和 阿里云的倚天都是非常好的 ARM 版云服务器。 性能上,基于ARM架构的实例规格,每一个vCPU都对应一个处理器的物理核心,具有性能稳定且资源独享的特点。而不是像 X86 架构,每一个 vCPU 其实对应的是一个超线程,并不是一整个物理核心。 价格上,基于ARM架构的实例拥有企业级的性能稳定性,但是价格却比企业级X86实例低得多。
1040 1
在倚天ARM版云服务器ECS上使用 HestiaCP 进行图形化建站
|
机器学习/深度学习 运维 数据可视化
非参数检验方法,核密度估计简介
核密度估计(Kernel Density Estimation,简称KDE)是一种非参数统计方法,用于估计数据样本背后的概率密度函数。
812 0
非参数检验方法,核密度估计简介
|
网络协议 安全 Linux
Linux防护与群集练习题(一)
Linux防护与群集练习题(一)
401 0
|
弹性计算 监控
参与 ECS 应用监控邀测活动,获得阿里云代金券
参与 ECS 应用监控邀测活动,获得阿里云代金券
参与 ECS 应用监控邀测活动,获得阿里云代金券
|
机器学习/深度学习