ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[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'; ~~~