【JS交互篇】BOM基础、Window、Location、Navagator、Screen、History对象

一、BOM 概述

在 JavaScript 语言中有三种对象:内置对象、宿主对象、自定义对象。

宿主对象就是执行 JavaScript 脚本的环境所提供的对象。对于网页编程来说,js 是运行在浏览器上的,所以对于网页编程来说,宿主对象就是浏览器对象,而学习浏览器对象,就要学习浏览器对象模型,即BOM。

JavaScript 基础到高级
Canvas游戏开发
原生JavaScipt案例合集
JavaScript +DOM基础

BOM (Browser Object Model),浏览器对象模型:

  • BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window ( 即:窗口对象 );
  • 浏览器对象模型(Browser Object Model)尚无正式标准;但由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是BOM的方法和属性

在这里插入图片描述

二、Window 对象

2.1 概述

  • window 对象作为浏览器模型中的顶级对象,指的是当前浏览器窗口,其下有对应的只读属性指向 document、history、location、navigator、screen、clipboardData 等对象的引用。

  • 所有浏览器都支持 window 对象,所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员 (全局变量是 window 对象的属性,全局函数是window 对象的方法,甚至 Html Dom 的 document 也是 window 对象属性之一。

    window.document.getElementById("myId")document.getElementById("myId") 相同。

2.2 窗口的打开与关闭

  • open(url, target, args) 打开新窗口

    • 参数 url 可选。为打开的网址或路径
    • 参数 target 可选。窗口打开方式
    • 参数args 可选。窗口样式设置。为 key=value 的参数字符串。 窗口设置的样式参数参考如下:
      • top=像素值,窗口顶部离开屏幕顶部的像素数
      • left=像素值,窗口左端离开屏幕左端的像素数
      • width=像素值,窗口的宽度 height=像素值,窗口的高度
      • menubar=yes|no,设置窗口是否有菜单
      • toolbar=yes|no,设置窗口是否有工具条
      • scrollbars=yes|no,设置窗口是否有滚动条
      • status=yes|no,设置窗口是否有状态栏
  • close() 关闭当前窗口

2.3 窗口关系及框架

  • 通过 window.open() 创建的新窗口的 Window 对象具有 opener 属性,可以通过 opener 打开它的原始窗口,这样两个窗口之间就可以相互引用,彼此之间可以读取对方的属性方法,而窗体也是一样;

  • 窗体是由 iframe 创建的,该元素有 contentWindow 属性,它引用自身的 Window 对象,而 Window 对象有 frameElement 属性,若该 Window 对象表示一个窗体,则 frameElement 是对 iframe 元素的引用,如以下元素

    <iframe id = 'f1'></iframe>
    var elt = document.getElementById('f1');
    var win = elt.contentWindow;
    win.frameElement === elt; //true
    window.frameElement === elt; //false 对于顶级窗口来说永远是false
    
  • 每个 Window 对象都有一个 frames 属性,包括窗体和子窗体。frames 属性引用了它所包含的窗体和子窗体的 Window 对象,frames 是由这些 Window 对象组成的类数组对象,可通过数字或窗体名来进行索引,如引用第一个子窗体 frames[0],引用第二个子窗体的第三个子窗体 frames[1].frames[2],引用兄弟窗体 parent.frames[1];

  • 内置对象在不同的窗口、窗体之间是相互独立的,它们有自己的一份独立的构造函数和原型对象的副本,它会在所有窗口窗体内自动预定义;而自定义对象则不同,可以在能够相互通信的窗口、窗体之间共享这个对象的构造函数和它的原型;如窗口中定义了Set类,有子窗体A和B,则:
    在父窗口中 :

    var s = new Set(); String.toString = function(){return '内置对象';} (修改String的toString方法)
    s.a === 1; //true
    

    在A中 :

    var sa = new parent.Set(); parent.Set.prototype.a =1; (给自定义类Set的原型添加属性a,则所有能相互通信的窗口共享a)
    var str = '测试';  str.toString; //测试  (调用的是窗体A自身的String对象的toString方法)
    

    在B中 :

    var Set = top.Set(); var sb = new Set(); sb.a === 1;  //true
    
  • 要引用窗口中的一个窗体,可以使用如下语法:

    frames[i] //当前窗口的框架
    self.frames[i] //当前窗口的框架
    w.frames[i] //窗口 w 的框架
    
  • 要引用一个框架的父窗口(或父框架),可以使用下面的语法:

    parent //当前窗口的父窗口
    self.parent //当前窗口的父窗口
    w.parent //窗口 w 的父窗口
    
  • 要从顶层窗口含有的任何一个框架中引用它,可以使用如下语法:

    top //当前框架的顶层窗口
    self.top //当前框架的顶层窗口
    f.top //框架 f 的顶层窗口
    

2.4 消息框(弹窗、系统对话框)

  • alert() 警告框。常用于确保用户可以得到某些信息;当警告框出现后,用户需要点击确定按钮才能继续进行操作
  • confirm() 确认框。用于验证是否接收用户操作,当确认框弹出时,用户可以点击“确认”或者“取消”来确定用户操作,当点击“确认”,确认框返回true,如果点击“取消”,确认框返回false
  • prompt() 提示框。常用于提示用户在进入页面前输入某个值;当提示框出现后,用户需要输入某个值,然后点击确认后者取消按钮才能继续操作;若点击确认,那么返回输入的值,若点击 取消,则返回null

2.5 获取当前视口大小

innerWidth 获取当前视口的宽度(只读)

innerHeight 获取当前视口的高度(只读)

不包含工具栏、菜单栏、系统栏、控制台区域… 包含滚动条

IE8及以下浏览器版本不兼容,那么请使用以下方式获取:

document.documentElement.clientWidth || document.body.clientWidth;
dowcument.documentElement.clientHeight || document.body.clientHeight;

IE6及以下只能通过 document.body 获取

浏览器兼容性写法

var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

2.6 计时器

setInterval(callbackfn, time) 间歇调用;每隔指定的时间执行一下重复的操作,多次 调用,除非手动清除

setTimeout(callbackfn, time) 延时调用;指定时间后去执行某个操作,只执行一次,可以在执行之前将其清除掉

clearInterval(timer) 清除指定间歇调用

clearTimeout(timer) 清除指定延时调用

var num = document.getElementById("num");
    var count = 0;
    var timer = window.setInterval(function(){
        if(count === 100){
            // 清除计时器
            clearInterval(timer)
        }
        num.innerHTML = count++ + "+";
},80);


window.setTimeout(function(){
    alert("不好意思,我打断一下!!")
},5000)
``

三、Navigator对象

Navigator对象属性如下:

属性说明
appCodeName返回浏览器的代码名
appName返回浏览器的名称
appVersion返回浏览器的平台和版本信息
platform返回运行浏览器的操作系统平台
userAgent返回由客户机发送服务器的user-agent 头部的值

三、Screen对象

Screen对象属性如下:

属性说明
availHeight返回屏幕的高度(不包括Windows任务栏)
availWidth返回屏幕的宽度(不包括Windows任务栏)
colorDepth返回目标设备或缓冲器上的调色板的比特深度
height返回屏幕的总高度
pixelDepth返回屏幕的颜色分辨率(每象素的位数) 不支持IE8及以下浏览器
width返回屏幕的总宽度

四、History对象

History对象属性如下:

属性说明
length返回历史列表中的网址数

History对象方法如下:

方法说明
back()加载 history 列表中的前一个 URL,相当于浏览器上面的回退箭头
forward()加载 history 列表中的下一个 URL,相当于浏览器上面的前进箭头
go()加载 history 列表中的某个具体页面

五、Location对象

Location对象属性如下:

属性描述
hash返回一个URL的锚部分
host返回一个URL的主机名和端口
hostname返回URL的主机名
href返回完整的URL
pathname返回的URL路径名。
port返回一个URL服务器使用的端口号
protocol返回一个URL协议(如:http https ftp等协议)
search返回一个URL的查询部分

Location对象方法如下:

方法说明
assign()载入一个新的文档
reload()重新载入当前文档,相当于浏览器上面的刷新按钮
replace()用新的文档替换当前文档

附地址栏解析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jYjueXtA-1691110488436)(BOM笔记.assets/image-20210112161122731.png)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MagnumHou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值