window对象

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

目录

  • 概述
  • window对象的属性
  • window.window,window.name
  • window.location
  • window.closed,window.opener
  • window.frames,window.length
  • window.screenX,window.screenY
  • window.innerHeight,window.innerWidth
  • window.outerHeight,window.outerWidth
  • window.pageXOffset,window.pageYOffset
  • navigator对象
  • navigator.userAgent
  • navigator.plugins
  • navigator.platform
  • navigator.onLine
  • navigator.geolocation
  • navigator.javaEnabled(),navigator.cookieEnabled
  • window.screen对象
  • window对象的方法
  • window.moveTo(),window.moveBy()
  • window.scrollTo(),window.scrollBy()
  • window.open(), window.close()
  • window.print()
  • window.getComputedStyle()
  • window.matchMedia()
  • window.focus()
  • window.getSelection()
  • 多窗口操作
  • 窗口的引用
  • iframe标签
  • frames属性
  • 事件
  • load事件和onload属性
  • error事件和onerror属性
  • URL的编码/解码方法
  • encodeURI
  • encodeURIComponent
  • decodeURI
  • decodeURIComponent
  • alert(),prompt(),confirm()
  • 参考链接

概述

在浏览器中,window对象(注意,w为小写)指当前的浏览器窗口。它也是所有对象的顶层对象。

“顶层对象”指的是最高一层的对象,所有其他对象都是它的下属。JavaScript规定,浏览器环境的所有全局变量,都是window对象的属性。

var a = 1;
window.a // 1

上面代码中,变量a是一个全局变量,但是实质上它是window对象的属性。声明一个全局变量,就是为window对象的同名属性赋值。

从语言设计的角度看,所有变量都是window对象的属性,其实不是很合理。因为window对象有自己的实体含义,不适合当作最高一层的顶层对象。这个设计失误与JavaScript语言匆忙的设计过程有关,最早的设想是语言内置的对象越少越好,这样可以提高浏览器的性能。因此,语言设计者Brendan Eich就把window对象当作顶层对象,所有未声明就赋值的变量都自动变成window对象的属性。这种设计使得编译阶段无法检测出未声明变量,但到了今天已经没有办法纠正了。

window对象的属性

window.window,window.name

window对象的window属性指向自身。

window.window === this // true

window.name属性用于设置当前浏览器窗口的名字。

window.name = 'Hello World!';
console.log(window.name)
// "Hello World!"

各个浏览器对这个值的储存容量有所不同,但是一般来说,可以高达几MB。

该属性只能保存字符串,且当浏览器窗口关闭后,所保存的值就会消失。因此局限性比较大,但是与