关于BOM
BOM:浏览器对象模型 (Browser Object Model)主要定义的是JS操作浏览器的方法和属性。 大部分方法都在window下。
常用方法:(JS里面规定如果方法前面是window,window可以省略不写。)
open(地址url,打开的方式) :打开一个新的窗口,并返回新打开窗口的window对象。如果参数为空 默认为打开空白页面,默认为新窗口方式打开。
返回值:返回新打开的窗口的window对象。window.open();
close():关闭窗口,存在兼容问题,火狐下没反应, IE会询问是否确认关闭,谷歌直接关闭关闭时提示问题,不过这个属性并不常用。
可以关闭在本窗口中通过open方法打开的新窗口。 如下:
1 2 3 4 5 | //实现 在本页面中打开一个新窗口,并点击本页面的一个按钮,再把新窗口关掉 opener = window.open(); //返回的新窗口对象 var btn.onclick = function (){ opener.close(); } |
BOM常用属性
1 2 3 4 5 | window.navigator.userAgent:浏览器的信息,比如版本号等 window.location:存放关于浏览器地址的一些信息,本身是一个对象,下面有方法和属性 。如下 window.location.href :浏览器具体地址 比如http: //i.cnblogs.com/EditPosts.aspx?opt=1#123 window.location.search:地址栏问号后的信息,包括问号(?opt=1) window.location.hash:地址栏 #后的信息,包括#号。(#123) |
文档可视区大小(指的是你视野范围可以看到的大小,不是实际大小。document是文档对象,documentElement文档元素)
1 | document.documentElement.clientWidth/clientHeight |
滚动距离(可视区的顶部到页面实际的顶部的距离,其实就是滚动出去的距离,有兼容问题)
1 2 | document.documentElement.scrollTop/scrollLeft:其他浏览器 document.body.scrollTop/scrollLeft :谷歌认为是body的而不是文档 |
兼容处理,以scrollTop为例:
1 | var scrollTop = document.documentElement.scrollTop||document.body.scrollTop; |
文档实际的内容高度(包括超过父元素或者超出被隐藏的内容高度,padding+width)
1 | document.body.scrollHeight(width) |
文档对象内容的高度,包括body的margin+padding+width+border。
1 2 | document.documentElement.offsetHeight(IE下有问题,它认为这个和可视区的高一样) document.body.offsetHeight(推荐用这个)不包括body的margin. |
window对象常用事件(事件触发次数是按时间间隔来算的,并不是你手动的频率)
onscroll :当滚动条滚动的时候触发
onresize :当窗口发生改变的时候触发
1 2 3 4 5 6 7 8 9 10 11 12 13 | var i =0; window.onscroll = function (){ document.title = i++; } window.onresize = function (){ document.title = i++; } |
如果大家有不同意见,不要只是点反对,欢迎评论指正,不然我不知道哪里有问题额。。。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端