[TOC]
# 简介
BOM(Browser Object Model) 是指浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。
我们在浏览器中的一些操作都可以使用BOM的方式进行编程处理,
比如:刷新浏览器、后退、前进、在浏览器中输入URL等
**BOM的顶级对象window**
window是浏览器的顶级对象,当调用window下的属性和方法时,可以省略window 注意:window下一个特殊的属性 `window.name`
name是windows属性,是字符串类型, 即使设置数字, 也会转为字符串
# 对话框
* alert()
* prompt()
* confirm()
~~~
var btn1 = document.getElementById('btn1');
var btn2 = document.getElementById('btn2');
var btn3 = document.getElementById('btn3');
btn1.onclick = function () {
alert('hello world');
}
btn2.onclick = function () {
var userName = prompt('请输入姓名', '张三');
console.log(userName);
}
btn3.onclick = function () {
var isSure = confirm('是否要删除数据?');
console.log(isSure);
}
~~~
# 页面加载事件
* onload
页面上所有的元素创建完毕,并且引用的外部资源下载完毕(js,css,图片), 才执行
~~~
window.onload = function () {
// 当页面加载完成执行
// 当页面完全加载所有内容(包括图像、脚本文件、CSS 文件等)执行
}
~~~
**如果js脚本写在 下面,那是 当页面上的元素创建完毕就会执行,但是外部文件没下载完毕也会执行**
* onunload
在onunload中所有对话框都是无法使用的
~~~
window.onunload = function () {
// 当用户退出页面时执行
}
~~~
# 定时器
## setTimeout()和clearTimeout()
在指定的毫秒数到达之后执行指定的函数,只执行一次
~~~
// 创建一个定时器,1000毫秒后执行,返回定时器的标示
var timerId = setTimeout(function () {
console.log('Hello World');
}, 1000);
// 取消定时器的执行
clearTimeout(timerId);
~~~
~~~
<input type="button" value="开始" id="btn1">
<input type="button" value="取消" id="btn2">
<script>
// setTimeout() 定时炸弹 隔一段时间执行,并且只会执行一次
// setInterval() 闹钟 隔一段时间执行,并且会重复执行
// 定时器的标示
var timerId;
var btn1 = document.getElementById('btn1');
btn1.onclick = function () {
// window.setTimeout()
// 两个参数
// 第一个参数 要执行的函数
// 第二个参数 间隔的时间 单位是毫秒
// 返回值 是一个整数,是定时器的标示
// timerId = setTimeout(function () {
// console.log('爆炸了');
// }, 3000);
timerId = setTimeout(fn, 3000);
function fn() {
console.log('爆炸了');
}
}
var btn2 = document.getElementById('btn2');
btn2.onclick = function () {
// 取消定时器的执行
clearTimeout(timerId);
}
</script>
~~~
## setInterval()和clearInterval()
定时调用的函数,可以按照给定的时间(单位毫秒)周期调用函数
~~~
// 创建一个定时器,每隔1秒调用一次
var timerId = setInterval(function () {
var date = new Date();
console.log(date.toLocaleTimeString());
}, 1000);
// 取消定时器的执行
clearInterval(timerId);
~~~
# location对象
location对象是window对象下的一个属性,时候的时候可以省略window对象
location可以获取或者设置浏览器地址栏的URL
## URL
统一资源定位符 (Uniform Resource Locator, URL)
* URL的组成
~~~
scheme://host:port/path?query#fragment
scheme:通信协议
常用的http,ftp,maito等
host:主机
服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。
port:端口号
整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
path:路径
由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
query:查询
可选,用于给动态网页传递参数,可有多个参数,用'&'符号隔开,每个参数的名和值用'='符号隔开。例如:name=zs
fragment:信息片断
字符串,锚点.
~~~
~~~
<body>
<input type="button" id="btn" value="跳转" />
</body>
<script type="text/javascript">
var btn = document.getElementById('btn');
btn.onclick = function () {
//打印地址栏的url
console.log(location.href);
//要加协议, 跳转到这个url, 支持后退
// location.href = "https://www.baidu.com";
//assign 委派
// assign()的 作用和href作用一样, 可以让页面跳转到指定的地方, 支持后退
// location.assign('https://www.weibo.com');
//替换掉地址栏的地址, 但是不记录历史, 不支持后退回去
// location.replace('http://www.baidu.com');
//重新加载 类似 f5刷新
// <meta http-equiv="refresh" content="2">
// location.assign(location);
//参数true 强制从服务器获取页面, false 如果浏览器有缓存的话,直接从缓存取页面
location.reload(true);
// f5刷新页面, 可能从缓存中加载, control+f5 强制刷新, 从服务器获取页面
}
</script>
~~~
## 前进和后腿
这是一组前进后退
~~~
* back()
* forward()
~~~
这也是一组前进后退
~~~
//go(1), go(-1) 前进几层, 后退几层
* go()
~~~
# navigator对象
* userAgent
通过userAgent可以判断用户浏览器的类型
* platform
通过platform可以判断浏览器所在的系统平台类型.
~~~
console.log(navigator.userAgent);
console.log(navigator.platform);
~~~
# js中的style注意
~~~
// style.left 获取的是标签中的style属性设置的样式属性的值
// 如果标签中的style没有设置该样式属性,我们获取到的是空字符串
console.log(box.style.left);
// 10px10px 当我们给样式属性设置非法的值,浏览器会帮我们过滤掉
console.log(box.style.left + 10 + 'px');
box.style.left = box.style.left + 10 + 'px';
~~~
- HTML
- 标签
- 超链接
- 列表
- 表格和表单
- h5新增标签
- 快捷方式
- 标签包含
- CSS
- 选择器
- 行内,块元素,链接
- css三大特性
- 盒子模型
- 定位
- css可见性
- emment书写
- 文本元素
- 外观属性
- 背景
- 浮动
- ps
- 用户界面样式
- 显示和隐藏
- 过渡
- 2D,3D变形
- 动画animation
- 伸缩布局(CSS3)
- BFC
- 优雅降级和渐进增强
- 3D旋转
- 双飞翼和圣杯
- JS基础
- 输出消息的几种方式
- 数据类型
- Date对象
- Math对象
- Array对象
- 字符串常用方法
- 数据类型转换
- 等号运算
- 代码调试
- 数组
- 函数
- WebAPI
- webapi简介
- 获取页面元素
- 事件
- 属性操作
- 创建元素
- 节点操作
- 事件详解
- BOM
- 位置相关属性
- 拖拽弹窗
- 弹出层加遮罩
- ES6
- let和const
- 解构表达式变化
- 函数优化
- map和reduce
- nrm
- npm
- npm基础
- package.json
- 淘宝镜像
- webpack
- 介绍
- 多入口文件(Multiple entry files)
- Webpack CSS loader加载器
- webpack Image loader 加载图片
- uglify-js压缩打包JS
- webpack构建本地服务器
- vue内部指令
- v-if,v-show,v-for
- v-text,v-html
- v-on
- v-model
- v-bind
- v-pre,v-cloak,v-once
- vue全局api
- Vue.directive 自定义指令
- vue.extend构造器的延伸
- vue.set全局操作
- Vue的生命周期(钩子函数)
- Template 制作模版
- Component 初识组件
- Component 组件props 属性设置
- Component 父子组件关系
- Component 标签
- vue选项
- propsData Option全局扩展数据传递
- computed Option 计算选项
- Methods Option 方法选项
- watch选项监控数据
- Mixins 混入选项操作
- Extends Option 扩展选项
- delimiters 选项
- vue实例和内置组件
- 实例属性
- 实例方法
- 实例事件
- 内置组件 -slot
- vue-cli
- vue-cli介绍
- 项目目录结构
- vue-cli模板
- vue-router
- 简介
- 配置子路由
- 参数传递
- 单页面多路由区域操作
- url传递参数
- vscode