十二、BOM

一、window对象

BOM的核心是window对象,window既是ECMAScript中的Global对象,又是浏览器窗口的JavaScript接口

1.Global作用域

var声明的全部全局变量和函数都会成为window的属性和方法

访问未声明的变量会报错,但是可以在window对象上查询是否存在未声明的变量

2.窗口关系

 top: 始终指向最外层窗口,浏览器窗口本身

 parent: 始终指向当前窗口的父窗口,如果当前窗口为最外层窗口,则parent === top

 self:始终指向window本身

3.窗口位置和像素比

 screenLeft / screenTop : 用于表示窗口相对屏幕左侧和顶部的位置 (单位CSS像素)

 moveTo(x,y) / moveBy(x,y): 移动窗口

 window.devicePixelRatio: 物理像素与CSS像素之间的转换比率,与每英寸像素数(DPI)对应

4.窗口大小

outerWidth / outerHeight: 浏览器窗口自身大小

innerWidth / innerHeight: 浏览器窗口中页面视图大小

 document.documentElement.clientWidth / document.documentElement.clientHeight / document.body.clientWidth / document.body.clientHeight

resizeTo(x,y) / resizeBy(x,y) :调整窗口大小

5.视口位置

 window.pageXoffset / window.pageYoffset
 window.scrollX / window.scrollY :  文档相对于视口滚动距离的位置

 scroll() scrollTo()   scrollBy() : 滚动页面,前两个方法接受目标位置的坐标,后者接受相对偏移

这几个方法也接受ScrollToOptions字典 { left: 100, top: 100, behavior: 'smooth' / 'auto' }

6.导航与打开新窗口

 window.open(url, targetWindowName, prefect, replaceBool) 打开一个新的窗口

url: 窗口的url

targetWindowName: 目标窗口名,可以是窗口名,也可以是“_self" "_parent" "_top" "_blank"等特殊窗口名

Prefect: 特性字符串

replaceBool: 新窗口在浏览器历史记录中是否替换当前加载页面

6-1)弹出窗口

特性字符串是用逗号分隔的设置字符串

fullscreen

 yes / no

 表示新窗口是否最大化,仅限IE10支持

location

Yes / no

是否显示地址栏 no

Menubar

 yes / no

是否显示菜单栏 no

resizable

Yes / no

是否可以拖动改变新窗口大小 no

scrollbars

 yes/ no

是否可以在内容过长时滚动 no

status

 yes / no

是否显示状态栏 no

toolbar

 yes/ no

是否显示工具栏 no

top

数值

新窗口的y轴坐标

width

数值

新窗口的宽度,不能小于100

height

数值

新窗口的高度,不能小于100

left

数值

新窗口的x轴坐标, 不能为负

Window.open()返回一个新窗口的引用。

Window.open()打开的窗口可以通过close()关闭,关闭后虽然引用还在,但是只能访问其closed属性检查是否关闭

新打开的窗口有一个openr属性,指向打开它的窗口

6-2)安全限制

IE7开始不能隐藏地址栏。不能移动或缩放弹窗

Firefox1 禁止隐藏状态栏

Opera只能在主窗口打开新窗口,并且不允许出现在在系统对话框的位置

浏览器会在用户操作下才允许创建弹窗

6-3)弹窗屏蔽

所有现代浏览器都内置了屏蔽弹窗的程序

检测弹窗是否被屏蔽,使用tray/catch调用window.open(),并检测返回值是否为null

7.定时器

setTimeout()           setinterval()

clearTimeout()        clearInterval()

8.系统对话框

 alert()

 comfirm()   有返回值true/false

 prompt() 取消返回null,否则返回输入的字符创

异步显示的对话框

Find() 查询

Print() 打印

二、location对象

提供当前窗口中加载文档的信息,既是window对象,又是document对象(window.location === document.location)

 location.hash

URL散列值

 location.host

服务器名及端口号

 location.hostname

服务器名

 location.href

当前加载页面的完整url

 location.pathname

url中的路径和文件名

 location.port

端口号

 location.portacol

协议

 location.search

查询字符串,以问号开头

 location.username

域名前指定的当前用户

 location.password

域名前指定的密码

 location.origin

Url的源地址

URLSearchParams:

提供一组标准的api方法,通过它们可以检查和修改查询字符串

操作地址

修改浏览器地址

                location.assign(url)           window.location = url            location.href = url

以上三种方法都会立即启动导航到新url的操作,并在浏览器历史记录中添加一条记录

修改location的属性也会修改当前加载的页面

 replace(url) 重新加载后不会新增历史记录

 reload() // 重新加载当前页,最有效的方法           reload(true)  重新从服务器加载当前页

三、navigator对象

其属性通常用于确定浏览器类型

检测插件:除了IE10及更低版本外的浏览器,都可以通过plugins数组确定是否安装了某个插件,每一项包含

 name:插件名

 description: 插件描述

 filename: 插件的文件名

 length: 由当前插件处理的MIME类型数量

旧版本IE浏览器检测插件,要使用专有的ActiveXObject,并尝试实例化特定的插件,每个插件有一个唯一的字符串标识符标识

plugins有一个refresh()方法,属性plugins属性以反映新安装的插件。接受boolean参数,true表示所有包含插件的页面都会重新加载;否则只有plugins会更新,页面不会重新加载。

注册处理程序

registerProtocolHandler(协议mailto/ftp,处理该协议的url, 应用名称)

将web应用程序注册为像桌面应用程序一样的默认应用软件

四、Screen对象

浏览器外面的客户端显示器的信息

五、History对象

当前窗口首次使用以来的用户导航历史记录

 go(n)  前往第几页

 go(url) 前往特定网址  back()   forward()

 length:历史记录数目

历史状态管理

Hashchange()  会在页面url的散列变化时被触发,开发者可以在此时做一些操作

History.pushState(stateObj, newTitle, 相对url)

单击后退时,会触发popstate事件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乘风xs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值