浏览器

目前主流的浏览器:

  • IE 6~11:从IE10开始支持ES6标准;

  • Chrome:基于Webkit内核,内置了非常强悍的JavaScript引擎——V8;

  • Safari:基于Webkit内核;

  • Firefox:Gecko内核,JavaScript引擎OdinMonkey;

不同的浏览器对JavaScript支持的差异主要是,有些API的接口不一样,比如AJAX,File接口。对于ES6标准,不同的浏览器对各个特性支持也不一样。

1.window

window对象不但充当全局作用域,而且表示浏览器窗口。

window对象有innerWidthinnerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高。
对应的,还有一个outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高。
兼容性:IE<=8不支持。

2.navigator

navigator对象表示浏览器的信息,最常用的属性包括:

navigator.appName:浏览器名称;
navigator.appVersion:浏览器版本;
navigator.language:浏览器设置的语言;
navigator.platform:操作系统类型;
navigator.userAgent:浏览器设定的User-Agent字符串。

充分利用JavaScript对不存在属性返回undefined的特性,直接用短路运算符||计算:

var width = window.innerWidth || document.body.clientWidth;

3.screen

screen对象表示屏幕的信息,常用的属性有:

screen.width:屏幕宽度,以像素为单位;
screen.height:屏幕高度,以像素为单位;
screen.colorDepth:返回颜色位数,如8、16、24。

4.location

location对象表示当前页面的URL信息。例如,一个完整的URL:

http://www.example.com:8080/p...
可以用location.href获取。要获得URL各个部分的值,可以这么写:

location.protocol; // 'http'
location.host; // 'www.example.com'
location.port; // '8080'
location.pathname; // '/path/index.html'
location.search; // '?a=1&b=2'
location.hash; // 'TOP'

要加载一个新页面,可以调用location.assign()。如果要重新加载当前页面,调用location.reload()方法非常方便。

5.document

document对象表示当前页面。由于HTML在浏览器中以DOM形式表示为树形结构,document对象就是整个DOM树的根节点。

document的title属性是从HTML文档中的<title>xxx</title>读取的,但是可以动态改变:

document.title = '努力学习JavaScript!';

请观察浏览器窗口标题的变化。

用document对象提供的getElementById()getElementsByTagName()可以按ID获得一个DOM节点和按Tag名称获得一组DOM节点

document对象还有一个cookie属性,可以获取当前页面的Cookie。

Cookie是由服务器发送的key-value标示符。因为HTTP协议是无状态的,但是服务器要区分到底是哪个用户发过来的请求,就可以用Cookie来区分。当一个用户成功登录后,服务器发送一个Cookie给浏览器,例如user=ABC123XYZ(加密的字符串)...,此后,浏览器访问该网站时,会在请求头附上这个Cookie,服务器根据Cookie即可区分出用户。

Cookie还可以存储网站的一些设置,例如,页面显示的语言等等。

JavaScript可以通过document.cookie读取到当前页面的Cookie:

document.cookie; // 'v=123; remember=true; prefer=zh'

服务器在设置Cookie时可以使用httpOnly,设定了httpOnly的Cookie将不能被JavaScript读取。这个行为由浏览器实现,主流浏览器均支持httpOnly选项,IE从IE6 SP1开始支持。

为了确保安全,服务器端在设置Cookie时,应该始终坚持使用httpOnly。

6.history

history对象保存了浏览器的历史记录,JavaScript可以调用history对象的back()或forward (),相当于用户点击了浏览器的“后退”或“前进”按钮。

这个对象属于历史遗留对象,对于现代Web页面来说,由于大量使用AJAX和页面交互,简单粗暴地调用history.back()可能会让用户感到非常愤怒。

新手开始设计Web页面时喜欢在登录页登录成功时调用history.back(),试图回到登录前的页面。这是一种错误的方法。

任何情况,你都不应该使用history这个对象了。

js温故而知新8(浏览器)——学习廖雪峰的js教程相关推荐

  1. js温故而知新11(AJAX)——学习廖雪峰的js教程

    Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求. 如果仔细观察一个Form的提交,你就会发现,一旦用户点击"Submit&qu ...

  2. 学习廖雪峰Git入门教程--总结

    廖雪峰的教程作为入门级别的个人感觉还是很实用的,大家可以去参考学习:廖雪峰Git教程 2018年8月23日14:52:25 [安装git] 先安装Git 安装好之后打开git.bash,之后输入下面的 ...

  3. java程序经过编译后会产生byte code_学习廖雪峰的JAVA教程---异常处理(Java的异常)...

    在计算机程序运行的过程中,总是会出现各种各样的错误. 有一些错误是用户造成的,比如,希望用户输入一个int类型的年龄,但是用户的输入是abc: // 假设用户输入了abc:String s = &qu ...

  4. sqlite字段是否存在_学习廖雪峰的JAVA教程---反射(访问字段)

    对任意的一个Object实例,只要我们获取了它的Class,就可以获取它的一切信息. 我们先看看如何通过Class实例获取字段信息.Class类提供了以下几个方法来获取字段: Field getFie ...

  5. 学习廖雪峰的git教程6--版本控制

    1git log 查看提交的版本 2git reset --hard HEAD^回退到上一个版本 3git reset --hard 版本号 回到某一个版本 转载于:https://www.cnblo ...

  6. 廖雪峰python教程-福利 | 廖雪峰官方Python教程,拿走不谢!

    原标题:福利 | 廖雪峰官方Python教程,拿走不谢! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Python玩跳一跳,跳到5 ...

  7. 廖雪峰Git简明教程整理

    廖雪峰Git简明教程 声明:本教程完全搬运自廖雪峰老师的个人网站,仅限于学习使用.所有版权归廖雪峰老师所有.整理人为Megatron,如果侵权请联系本人zhangwz93@foxmail.com删除. ...

  8. 廖雪峰python视频教程-福利 | 廖雪峰官方Python教程,拿走不谢!

    原标题:福利 | 廖雪峰官方Python教程,拿走不谢! Python简直就是万能的,你用Python都做过哪些事? 用网页看各大网站的VIP视频,用python下载? 用Python玩跳一跳,跳到5 ...

  9. 廖雪峰python3爬虫教程_Scrapy爬虫框架入门教程(1)——爬取廖雪峰老师的博客...

    最近一直在学习scrapy,但是网上关于scrapy的教程实在是太少,能找到的教程大多都是基于py2.7/scrapy0.2以下,甚至很多教程都是互相抄袭,连代码都抄漏了好多,更别提各种缩进错误.变量 ...

最新文章

  1. OpenCV画图函数
  2. bazel源码编译Tensorflow
  3. SpringBoot启动标识修改
  4. 配置腾讯云服务器-2021-3-27
  5. redux-thunk的简单使用
  6. synchronize与lock的区别
  7. python谷歌浏览器驱动安装失败_阿里云centos7.2下安装chrome浏览器+webdriver+selenium及常见设置-傻瓜教程...
  8. NAT的extendable参数,使得一个地址被不同接口NAT出去测试
  9. 微信OAuth2.0网页授权设置一个域名需多个域名使用的问题
  10. mysql 平均值 排序_MySQL按平均两个平均值排序
  11. 2018ACM/ICPC亚洲区域赛(焦作)F. Honeycomb
  12. 解决Entry fileTemplates//Singleton.java.ft not found in C:/Dev/android-studio/lib/resources_en.jar
  13. TCP详解——连接建立与断开
  14. zabbix详解(二)——zabbix工作原理
  15. 图片URL转换为base64的两种方式
  16. Linux 文本去重——uniq
  17. 【Ail规约】慎用 Object 类下的 clone 方法拷贝对象
  18. netstat -i和-s
  19. 基于ESP8266的智能家庭检测系统
  20. python 输入与输出函数 IPO模式 200307

热门文章

  1. 咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1
  2. F7-Vue1.0与2.0不兼容列表
  3. jQuery异步上传文件
  4. 数梦工场联手阿里云 推出大数据一体机
  5. 计算Android屏幕解锁组合数
  6. 谷歌I/O大会3月对开发者开放
  7. SQL SERVER 2008过了评估期
  8. 3、深入理解计算机系统笔记:程序的机器级表示
  9. 最新全球自由职业技能单日排行
  10. 为什么说比特币的交易属性优于储值属性