当前位置: 首页 > news >正文

第十一章 浏览器对象模型(BOM)的介绍和使用

文章目录

  • 一、BOM介绍
  • 二、window的子对象
  • 三、window的方法和事件
  • 四、定时器
  • 五、练习

一、BOM介绍

  1. BOM是Browser Object Model的缩写,简称浏览器对象模型。这个对象就是window
  2. BOM提供了独立于内容而与浏览器窗口进行交互的对象
  3. BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性
  4. BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C
  5. 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window
  6. 因为js最终被运行在浏览器环境中,所以js中所有的数据最终都会被window收录
    • 具体的表现为:所有的全局,都被直接绑定在了window身上,尤其是js自带的全局
      • window.alert() => alert()
      • window.parseInt() => parseInt()
      • window.parseFloat() => parseFloat()
      • window.document.write() => document.write()
      • window在使用过程中可以省略
    • 没有明确隶属对象的函数,也都指向window
      • 需要配合关键字:this,查看
// 有隶属对象
var obj = {fn:function(){};
}
obj.fn();// 全局函数,没有隶属对象
function fn(){}
fn();function box(){function fn(){}// 局部函数,没有隶属对象fn();
}
box();function box2(f){// 回调函数,没有隶属对象f();
}
box2( function(){} );

二、window的子对象

image.png

  1. history:历史记录
    • 方法:
      • 后退:history.back()
      • 前进:history.forward()
      • 走n步:history.go(n)
        • 正:前进;负:后退;0:刷新
    • 属性:
      • 个数:history.length
  2. location:地址
    • 属性:
      • 完整URL:location.href
      • 协议:location.protocol
      • 域:location.host
      • 域名:location.hostname
      • 源:location.origin
      • 端口:location.port
      • 路径名:location.pathname
      • 查询数据:location.search
      • 锚点连接:location.hash
    • 方法:
      • 刷新:location.reload()
      • 跳转到指定url:location.assign("url")
  3. navigator:浏览器信息
    • 浏览器信息:navigator.userAgent
  4. screen:视窗大小
  5. frames:框架对象,配合iframe标签使用
  6. document:文档,网页
  7. localStorage & sessionStorage:本地存储

三、window的方法和事件

  1. window的方法
    • alert()
      • 信息框
    • confirm()
      • 选择框,注意返回值
    • prompt()
      • 对话框,注意返回值
    • open()
      • open("url", "_blank", "width=300,height=300,left=200,top=100")
    • close()
      • 注意浏览器拦截机制,部分浏览器有兼容
    • scrollTo()
      • 参数为两个数值或一个对象
      • scrollTo(x, y)
      • scrollTo({top: y, left: x, behavior: 'smooth'})
  2. window的事件
    • load
      • 页面结构加载完成
      • 外部资源加载完成
    • scroll
      • 获取滚走了的距离
        • document.documentElement.scrollTop
        • document.documentElement.scrollLeft
    • resize
      • 获取当前可视区域的尺寸
        • document.documentElement.clientWidth
        • document.documentElement.clientHeight

四、定时器

  1. 计时器
    • 每隔指定时间,执行一次指定功能
    • 开启:setInterval(参数1, 参数2)
      • 参数1:回调函数
      • 参数2:毫秒数
      • 每隔指定的毫秒数,执行一次回调函数
      • 返回值:当前计时器的唯一标志,用来关闭自身
        • 建议:如果这个计时器要被清除,最好将返回值保存在变量中,将来通过变量清除当前计时器
    • 关闭:clearInterval(参数)
      • 参数:要清除的计时器的唯一标志(返回值)
  2. 延时器
    • 延迟指定时间,只执行一次指定功能
    • 开启:setTimeout(参数1, 参数2)
      • 参数1:回调函数
      • 参数2:毫秒数
      • 延迟指定的毫秒数,只执行一次回调函数
      • 返回值:当前延时器的唯一标志,用来关闭自身
        • 建议:如果这个延时器要被清除,最好将返回值保存在变量中,将来通过变量清除当前延时器
    • 关闭:clearTimeout(参数)
      • 参数:要清除的延时器的唯一标志(返回值)

五、练习

  1. 倒计时:计时器
  2. 随机点名:随机,计时器

相关文章:

  • elasticsearch 笔记二:搜索DSL 语法(搜索API、Query DSL)
  • JSON在Java中的使用
  • 封装uniapp签字板
  • python+django网上购物商城系统o9m4k
  • Flink去重计数统计用户数
  • 【23.12.29期--Redis缓存篇】谈一谈Redis的集群模式
  • 鸿鹄电子招投标系统:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台源码与立项流程
  • go-carbon v2.3.1 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库
  • Python与ArcGIS系列(十七)GDAL之shp转geojson
  • 【HTML5】第1章 HTML5入门
  • QT UI自动化测试(1)
  • 从C到C++1
  • C++ 结构体(面向对象编程)
  • 【SpringCloud】-OpenFeign实战及源码解析、与Ribbon结合
  • Notepad++批量更改文件编码格式及文档格式
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Cookie 在前端中的实践
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES2017异步函数现已正式可用
  • ESLint简单操作
  • JSONP原理
  • JWT究竟是什么呢?
  • leetcode讲解--894. All Possible Full Binary Trees
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • node和express搭建代理服务器(源码)
  • React中的“虫洞”——Context
  • TypeScript实现数据结构(一)栈,队列,链表
  • v-if和v-for连用出现的问题
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 每天一个设计模式之命令模式
  • 前端设计模式
  • 温故知新之javascript面向对象
  • 学习HTTP相关知识笔记
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 栈实现走出迷宫(C++)
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Semaphore
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #WEB前端(HTML属性)
  • (C++17) optional的使用
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (转) ns2/nam与nam实现相关的文件
  • .bat批处理(一):@echo off
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Project Open Day(2011.11.13)
  • .Net 路由处理厉害了
  • .net操作Excel出错解决
  • /*在DataTable中更新、删除数据*/
  • ?php echo ?,?php echo Hello world!;?
  • @Not - Empty-Null-Blank
  • []T 还是 []*T, 这是一个问题
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——