Window对象包含以下五大核心:document,screen,navigator,history,location。

一     document 文档

document包含了浏览器对标准DOM实现的所有方法和属性。

1,BOM和DOM的关系大致如下图:

   这里是网上找的图。

二       screen

window.screen包含了用户屏幕的相关信息,比较有用的有四个属性,他们都返回以像素计的整数:

screen.width:屏幕宽度

screen.height:屏幕高度

screen.availWidth:屏幕可用宽度

screen.availHeight:屏幕可用高度

可用高度/宽度是减去了诸如窗口工具条之类的界面特征,典型的如windows系统的任务栏。

 console.log(screen.width);//1920
console.log(screen.height);//1080
console.log(screen.availWidth);//1920
console.log(screen.availHeight);//1040,因为我在底部设置了始终显示任务栏

三     navigator

navigator.appCodeName:浏览器的代码名

navigator.appName:浏览器名称

navigator.appVersion:浏览器平台和版本信息

navigator.cookieEnabled:是否启用cookie

navigator.onLine:是否联网

navigator.platform:操作系统版本

navigator.language:系统语言

 navigator.appCodeName;//"Mozilla"
navigator.appName;//"Netscape"
navigator.appVersion;//"5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36"
navigator.cookieEnabled;//true
navigator.onLine;//true
navigator.platform;//"win32"
navigator.language;//"zh-CN"

  由于一些历史原因,大部分浏览器的appCodeName和appName都返回相同的值。

四     history

  History.length:历史列表中元素个数

   history.back():后退

  history.forward():前进

  history.go():接受一个数字,跳转到数字指定的页面,0表示当前页

  history.pushState(stateObj,null,url):向历史列表插入一条记录(url必须同源)

方法接受3个参数,第一个是一个状态对象(包含一些数据),第二个是标题,但大多数浏览器都忽略了这个参数,所以一般传递一个null即可,第三个是url(必须是相同域名下的)。

    它的功能是在当前页的历史记录后面插入一条新的记录,但当前页面不会被重载为新的url地址。新页面的history.state保存了状态对象的一个副本,这样我们通过第一个参数就可以轻松实现页面之间的数据传递了

  history.replaceState():替换当前历史记录。用法和pushState一样。

  这两个方法有一个相当重要的应用,那就是可以在不刷新页面的情况下修改浏览器的url地址。

 //假如我们现在正在浏览一个网页,网址是:http://news.163.com
var obj = {name:"ren"};
console.log(history.state);//null
history.pushState(obj,null,"/domestic/");
/*这时网址变成了http://news.163.com/domestic/,但网页并没有任何变化。
刷新网页,页面将跳转至https://news.163.com/domestic/这个页面,并且在这里访问history.state的值,则变成了{name:"ren"}。再点击后退,将返回http://news.163.com页面*/

  

 //假如我们现在正在浏览一个网页,网址是:http://news.163.com/domestic/
history.replaceState(null,null,"/world/");
/*这时网址变成了http://news.163.com/world/,但网页并没有任何变化。
如果这时我们在地址栏输入http://www.baidu.com,并访问它。再点击后退,这时你将发现,网页退回到了http://news.163.com/world/,而不是http://news.163.com/domestic/*/

详情请看MDN https://developer.mozilla.org/zh-CN/docs/Web/API/History_API

五   location

  一个包含所有信息的完整URL地址包含以下要素(只有协议、域名和端口是必须的):

  https://news.sina.com.cn:8080/gov/xlxw/2019-08-23/ihytcern.html?page=123&set=true#name=1

 a:双斜杠之前的协议

         b:双斜杠后面的域名

         c:冒号后面的端口

         d:单斜杠之间的文档路径

         e:最后一个斜杠后面的文档名称

         f:问号之后的查询(参数)

         g:井号之后的锚

         1,属性

  location.href:当前页面的完整URL

location.protocol:web协议

location.host/ location.hostname:主机/名(多数情况返回内容相同)

location.port:端口号

location.pathname:路径

location.search:查询,即?后面的部分

location.hash:锚,即#后面的部分

注意:井号后面的值不会传递给服务器,所以改变它不会重载页面,但会改变本地浏览历史记录。

 //假设当前访问的页面url是"https://news.sina.com.cn:8080/gov/xlxw/2019-08-23/ihytcern.html?page=123&set=true#name=1";
location.href;// "https://news.sina.com.cn:8080/gov/xlxw/2019-08-23/ihytcern.html?page=123&set=true#name=1"
location.protocol;//"https:"
location.host/ location.hostname;//"news.sina.com.cn"
location.port;//
location.pathname;//"/gov/xlxw/2019-08-23"
location.search;//"?page=123&set=true"
location.hash;//"#name=1"

  

  2,方法

location.assign(url):加载给定url的新页面,会添加新的历史记录。

location.reload():重载当前页面,有一个可选参数:ture表示直接从服务器加载,false表示从缓存加载。

location.replace(url):加载给定url的新页面,但新页面不会向history中插入一条新纪录。

BOM之window核心模块的更多相关文章

  1. Nodejs核心模块

    (1)全局对象 在浏览器JS中,通常window是全局对象,而nodejs中的全局对象是global,所有全局变量都是global对象的属性. 在nodejs中能够直接访问到的对象通常都是global ...

  2. JS框架设计读书笔记之-核心模块

    随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码. 模块的功能主要是:对象扩展.数组化.类型判定.事件绑定和解绑.无冲突处理.模块加载 ...

  3. node八-核心模块、包

    学会查API,远比会几个API更重要. 核心模块意义 -如果只是在服务器运行javascript代码,并没有多大意义,因为无法实现任何功能>读写文件.访问网络 -Node的用处在于它本身还提供可 ...

  4. 【饿了么】—— Vue2.0高仿饿了么核心模块&移动端Web App项目爬坑(三)

    前言:接着上一篇项目总结,这一篇是学习过程记录的最后一篇,这里会梳理:评论组件.商家组件.优化.打包.相关资料链接.项目github地址:https://github.com/66Web/ljq_el ...

  5. Node.js核心模块_全局变量、util学习

    全局对象 javascript的全局对象是window,他及其所有属性都可以在程序的任何地方访问.即全局变量. 而在node中全局对象是global,所有全局变量都是global对象的属性,包括其本身 ...

  6. Zepto核心模块源代码分析

    一.Zepto核心模块架构 Zepto核心模块架构图 该图展示了Zepto核心模块架构代码的组织方式.主要分为私有变量.函数和暴露给用户的所有api. Zepto核心模块架构代码 该图展示了Zepto ...

  7. Tensorflow.nn 核心模块详解

    看过前面的例子,会发现实现深度神经网络需要使用 tensorflow.nn 这个核心模块.我们通过源码来一探究竟. # Copyright 2015 Google Inc. All Rights Re ...

  8. Nodejs进阶:核心模块net入门与实例讲解

    模块概览 net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net. ...

  9. 嵌入式系统图形库GUI核心模块介绍

    本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:h ...

随机推荐

  1. SpringBoot 配置 AOP 打印日志

    在项目开发中,日志系统是必不可少的,用AOP在Web的请求做入参和出参的参数打印,同时对异常进行日志打印,避免重复的手写日志,完整案例见文末源码. 一.Spring AOP AOP(Aspect-Or ...

  2. [系列] 使用 go modules 包管理工具(一)

    目录 概述 初始化 添加依赖包 go mod 命令 小结 源码地址 概述 我想实现一个开箱即用的 API 框架的轮子,这个轮子是基于 Gin 基础上开发的. 为什么是开箱即用,它会集成哪些功能? 以上 ...

  3. Android Studio启动模拟器失败

    启动Android Studio的模拟器报“Emulator: Process finished with exit code -1073741819 (0xC0000005)”错误教程: 1.进入该 ...

  4. 对IOC和DI的通俗理解

    学习过spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  5. FFmpeg命令行map参数选择音视频流

    FFmpeg命令行map参数选择音视频流 介绍 -map参数告诉ffmpeg要从输入源中选择/拷贝哪个stream流到输出,可以从输入源中选择多个音视频流作为输出. 不加-map参数,ffmpeg默认 ...

  6. 游戏客户端面试(Egret)

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321 一.朋友面的一家公司 1.说下let,var,const.       var定义的变量,没有块的概念,可以跨块访问, 不能跨函 ...

  7. HTML 参考手册(摘自菜鸟教程)

    标签 描述 基础   <!DOCTYPE>  定义文档类型. <html> 定义一个 HTML 文档 <title> 为文档定义一个标题 <body> ...

  8. iframe中使用模态框提交表单后,iframe加载父页面的解决方法

    在iframe中使用模态框提交表单后,会出现iframe加载整个父页面的问题,如下图: 解决方法: 在form表单中添加target属性 _parent 这个属性会使目标文档载入父窗口或者包含来超链接 ...

  9. (五十八)c#Winform自定义控件-管道阀门(工业)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  10. CodeForces 474F Ant colony ST+二分

    Ant colony 题解: 因为一个数是合法数,那么询问区间内的其他数都要是这个数的倍数,也就是这个区间内的gcd刚好是这个数. 对于这个区间的gcd来说,不能通过前后缀来算. 所以通过ST表来询问 ...