网络安全——window对象

浏览器里面,window对象指当前的浏览器窗口。它是当前页面的顶层对象,即最高一层的对象,所有其他对象都是它的下属。

a = 1;
window.a 
// 1

// 上述代码中a是一个没有声明就直接赋值的变量,则自动默认为顶层对象的属性

window 对象的属性

window.name

//该属性是一个字符串(若写入值不是字符串会自动转为字符串),表示当前浏览器窗口的名字

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

只要浏览器窗口不关闭,这个属性是不会消失的。在同一浏览器窗口的新页面可以访问到上一个网页设置的window.name属性,但浏览器关闭后属性值就会消失。

window.closed

//该属性返回一个布尔值,表示窗口关闭(false)

window.closed // false
//该属性一般用来检查,使用脚本的新窗口是否关闭
var popup = window.open();

if ((popup !== null) && !popup.closed) {
   
  // 窗口仍然打开着
}

window.opener

//该属性表示打开当前窗口的父窗口。若没有父窗口,则返回null

window.open().opener === window 
// true
//若两个窗口之间不需要通信,可将子窗口的opener属性设为null

var newWin = window.open('example.html', 'newWindow', 'height=400,width=400');
newWin.opener = null;

通过opener属性,可以获得父窗口的全局属性和方法,但只限于两个窗口同源的情况,且其中一个窗口由另一个打开。<a>元素添加rel="noopener"属性,可以防止新打开的窗口获取父窗口,减轻被恶意网站修改父窗口 URL 的风险。

<a href="https://an.evil.site" target="_blank" rel="noopener">
恶意网站
</a>

window.self,window.window

//这两个属性都指向窗口本身,并且只读

window.self === window // true
window.window === window // true

window.frames

window.frames属性返回一个类似数组的对象,成员为页面内所有框架窗口,包括frame元素和iframe元素。window.frames[0]表示页面中第一个框架窗口。

如果iframe元素设置了idname属性,那么就可以用属性值,引用这个iframe窗口。比如<iframe name="myIFrame">可以用frames['myIFrame']或者frames.myIFrame来引用。

//frames属性是window对象的别名,frame[0]等同于window[0]
frames === window // true
//从语义上看,相比于window,frames更加清晰

window.length

//该属性返回当前页面所包含的框架总数,若当前网页不包含frame和iframe元素,则返回值为0

window.frames.length === window.length // true

window.frameElement

window.frameElement属性主要用于当前窗口嵌在另一个网页的情况(嵌入<object><iframe><embed>元素),返回当前窗口所在的那个元素节点。如果当前窗口是顶层窗口,或者所嵌入的那个网页不是同源的,该属性返回null

// HTML 代码如下
// <iframe src="about.html"></iframe>

// 下面的脚本在 about.html 里面
var frameEl = window.frameElement;
if (frameEl) {
   
  frameEl.src = 'other.html';
}

//上面代码中,frameEl变量就是<iframe>元素。

window.top,window.parent

window.top属性指向最顶层窗口,主要用于在框架窗口(frame)里面获取顶层窗口。

window.parent属性指向父窗口。如果当前窗口没有父窗口,window.parent指向自身。

if (window.parent !== window.top) {
   
  // 表明当前窗口嵌入不止一层
}

对于不包含框架的网页,这两个属性等同于window对象。

window.status

window.status属性用于读写浏览器状态栏的文本。但是,现在很多浏览器都不允许改写状态栏文本,所以使用这个方法不一定有效。

window.devicePixelRatio

window.devicePixelRatio属性返回一个数值,表示一个 CSS 像素的大小与一个物理像素的大小之间的比率。也就是说,它表示一个 CSS 像素由多少个物理像素组成。它可以用于判断用户的显示环境,如果这个比率较大,就表示用户正在使用高清屏幕,因此可以显示较大像素的图片。

位置大小属性

以下属性返回window对象的位置信息和大小信息。

(1)window.screenX,window.screenY

window.screenXwindow.screenY属性,返回浏览器窗口左上角相对于当前屏幕左上角的水平距离和垂直距离(单位像素)。这两个属性只读。

(2) window.innerHeight,window.innerWidth

window.innerHeightwindow.innerWidth属性,返回网页在当前窗口中可见部分的高度和宽度,即“视口”(viewport)的大小(单位像素)。这两个属性只读。

用户放大网页的时候(比如将网页从100%的大小放大为200%),这两个属性会变小。因为这时网页的像素大小不变(比如宽度还是960像素),只是每个像素占据的屏幕空间变大了,因此可见部分(视口)就变小了。

注意,这两个属性值包括滚动条的高度和宽度。

(3)window.outerHeight,window.outerWidth

window.outerHeightwindow.outerWidth属性返回浏览器窗口的高度和宽度,包括浏览器菜单和边框(单位像素)。这两个属性只读。

(4)window.scrollX,window.scrollY

window.scrollX属性返回页面的水平滚动距离,window.scrollY属性返回页面的垂直滚动距离,单位都为像素。这两个属性只读。

注意,这两个属性的返回值不是整数,而是双精度浮点数。如果页面没有滚动,它们的值就是0

举例来说,如果用户向下拉动了垂直滚动条75像素,那么window.scrollY就是75左右。用户水平向右拉动水平滚动条200像素,window.scrollX就是200左右。

if (window.scrollY < 75) {
   
  window.scroll(0, 75);
}

上面代码中,如果页面向下滚动的距离小于75像素,那么页面向下滚动75像素。

(5)window.pageXOffset,window.pageYOffset

window.pageXOffset属性和window.pageYOffset属性,是window.scrollXwindow.scrollY别名。

组件属性

  • window.locationbar:地址栏对象
  • window.menubar:菜单栏对象
  • window.scrollbars:窗口的滚动条对象
  • window.toolbar:工具栏对象
  • window.statusbar:状态栏对象
  • window.personalbar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值