跳到主要内容

BOM的概念,一些BOM对象

1、BOM的概念

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

在浏览器中的一些操作都可以使用 BOM 的方法进行编程处理。

比如:刷新浏览器、前进、后退、在地址栏输入 URL 等。

2、BOM 顶级对象

BOM 的顶级对象是:window

window 是浏览器的顶级对象,当调用 window 下的属性和方法时,可以省略 window。

注意:

1、window 下的一个特殊属性:window.name,所以不要轻易定义 name 变量,会导致 window.name 被修改。

2、top 等同于 window。

3、系统对话框

window.alert();
window.prompt();
window.confirm(); // 两个按钮,分别返回 true 和 false。

以上对话框都不建议使用。

1、弹框时页面无法加载;

2、各个浏览器的样式不相同,且样式不可自定义。

4、window对象方法

4.1、open

描述:打开一个新的浏览器窗口或查找一个已命名的窗口。

语法:var openId = window.open(新窗口地址,"窗口名",窗口属性);

示例:var openId = window.open("sub.html","窗口名","Width=300px, height=250px, left=100px, top=100px");

width: 新窗口的宽

height:新窗口的高

left:新窗口距离屏幕左边的距离

top:新窗口距离屏幕顶部的距离

注意:如果两次弹出窗口名一样,将不会打开新弹窗,而再之前的弹窗中加载新页面。

关闭窗口:

openId.close(); //关闭id为openId的窗口
close(); // 关闭当前窗口

5、页面加载对象

提出问题:

我们知道,如果将 script 标签放在 head 里面的话,页面加载的时候是先加载的 script 标签,之后才加载 body 里面的标签。如果 script 特别大的话,就很影响用户体验。

解决办法:

1、将 script 标签放在 body 最后。

2、使用 window.onload 事件。

<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.onload = function () {
document.getElementById("btn").onclick = function () {
alert("haha");
}
}
</script>
</head>
<body>
<input type="button" value="BUTTON" id="btn">
</body>

1、如果不写 window.onload 的话,执行到 document.getElementById("btn") 会报错,因为程序是从上至下执行。

2、window.onload 事件会在页面加载完毕(页面中所有内容、标签、属性以及外部引入的 js文件)时触发。

3、window.onload 可以省略 window。

window.onunload = function () {
alert("yes");
}

onunload: 页面关闭后才触发的事件

window.onbeforeunload = function () {
alert("yes");
}

onbeforeunload:在页面关闭之前触发的事件

onscroll :当滚轮滚动时触发。

onresize :当窗口大小改变时触发。

6、location 对象(地址栏)

学习一个对象主要是学习它里面的属性和方法。

6.1、属性

console.log(window.location.href); // 地址域名  
console.log(window.location.search);//?_ijt=28855sggj8kcffva8q9bhc1eh0 --- 搜索的内容
console.log(window.location.hash); // 地址栏上#及后面的内容
console.log(window.location.host); // localhost:63342 ---- 主机名及端口号
console.log(window.location.hostname); // localhost ---- 主机名
console.log(window.location.port); //63342 ---- 端口号
console.log(window.location.pathname);// /JS/images/location.html --- 相对路径
console.log(window.location.protocol);// http: --- 协议

6.2、方法

document.getElementById("btn").onclick = function () {
location.href = "http://fengdaoting.com";
location.assign("http://fengdaoting.com");
location.reload();
location.replace("http://fengdaoting.com");
};

location.href location.assign(): 设置跳转的页面地址,这两个属性和方法作用相同,并且都保存跳转前的地址(在浏览器中可以点击返回按钮)。

location.reload() : 刷新页面。刷新页面也可以使用:把href =自己本身的地址

location.replace() : 设置跳转的页面地址,但是不保存跳转前的地址。

7、history 对象

window.history.length // 返回浏览器历史列表中的 URL 数量
window.history.forward(); // 前进,加载 history 列表中的下一个 URL
window.history.back() // 后退,加载 history 列表中的前一个 URL
window.history.go(number); //加载 history 列表中的某个具体页面,或者要求浏览器移动到指定的页面数量(负数为后退number页,正数为前进number页)

<a href="javascript:window.history.reload()"></a>

a 标签可以使用 javascript的方式来编写js代码。

8、navigator 对象

window.navigator.platform; // 判断浏览器所在的系统平台 // win32
window.navigator.appName // 浏览器名称 // Netscape
window.navigator.appVersion // 浏览器版本 //5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36
window.navigator.userAgent; // 判断浏览器的类型,是谷歌火狐还是IE // chrome 下结果:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36

9、screen 对象

screen 对象包含有关客户端显示屏幕的信息。

很少使用,用的话只在移动端使用,在PC端固定不变,获取的是设备的宽高,而不是页面的宽高。

screen.availHeight // 返回可用显示屏幕的高度 (除 Windows 任务栏之外)。 
screen.availWidth//返回可用显示屏幕的宽度 (除 Windows 任务栏之外)。
screen.height //返回显示器屏幕的高度。
screen.width //返回显示器屏幕的宽度。

10、document

属性:

document.all   //提供对文档中所有 HTML 元素的访问。是数组类型 
document.forms // 返回对文档中所有 Form 对象引用。是数组类型
document.URL //返回当前文档的 URL。
document.bgColor //可以改变文档的颜色;( document.bgColor="gray";)
document.documentElement // html元素
document.body // body元素

方法:

document.getElementById() //返回对拥有指定 id 的第一个对象的引用。 
document.getElementsByName()// 返回带有指定名称的对象集合。
document.getElementsByTagName() //返回带有指定标签名的对象集合。
document.write() //向文档写 HTML 表达式 或 JavaScript 代码。

11、iframe

引入外部链接,一般用于展示,可以一个页面放多个外部链接页面。如果操作页面的话,还是会跳转到外部链接网站。

<iframe src="http://www.360.com" width="400px" height="400px"></iframe>