JavaScript 浏览器对象模型BOM原理与常见用法实例分析


Posted in Javascript onDecember 16, 2019

本文实例讲述了JavaScript 浏览器对象模型BOM原理与常见用法。分享给大家供大家参考,具体如下:

什么是BOM

BOM:Browser Object Model,浏览器对象模型

JavaScript 浏览器对象模型BOM原理与常见用法实例分析

从上图也可以看出:

  • window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象。
  • DOM是BOM的一部分。

window对象:

  • window对象是JavaScript中的顶级对象。
  • 全局变量、自定义函数也是window对象的属性和方法。
  • window对象下的属性和方法调用时,可以省略window。

弹出系统对话框

比如说,alert(1)是window.alert(1)的简写,因为它是window的子方法。

系统对话框有三种:

alert(); //不同浏览器中的外观是不一样的
confirm(); //兼容不好
prompt(); //不推荐使用

打开窗口、关闭窗口

打开窗口

window.open(url,target)

参数解释:

  • url:要打开的地址。
  • target:新窗口的位置。可以是:_blank 、_self、 _parent 父框架。
<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title></title>
 </head>
 <body>
  <!--行间的js中的open() window不能省略-->
  <button onclick="window.open('https://www.luffycity.com/')">路飞学城</button>
  <button>打开百度</button>
  <button onclick="window.close()">关闭</button>
  <button>关闭</button>
 </body>
 <script type="text/javascript">
  var oBtn = document.getElementsByTagName('button')[1];
  var closeBtn = document.getElementsByTagName('button')[3];
  oBtn.onclick = function(){
      //open('https://www.baidu.com')
   //打开空白页面
   open('about:blank',"_self")
  }
  closeBtn.onclick = function(){
   if(confirm("是否关闭?")){
    close();
   }
  }
 </script>
</html>
<body>
<!--BOM使用的是window.开头的语句-->
<!--history模式和 hash模式-->
<!--history模式: xxxx/#/index.html-->
<!--hash模式:xxxx/index.html-->
<button id="btn">跳转</button>
<script>
 var oBtn=document.getElementById('btn');
 oBtn.onclick=function(){
  console.log(location);
  //打开百度,下面三种方式皆可
  // location.href='http://www.baidu.com';
  // open('http://www.baidu.com','_self');
  window.open('http://www.baidu.com','_self');//在当前页面打开
  window.location.reload();//刷新或者叫重载
 }
</script>
</body>

location对象

window.location可以简写成location。location相当于浏览器地址栏,可以将url解析成独立的片段。

location对象的属性

  • href:跳转
  • hash 返回url中#后面的内容,包含#
  • host 主机名,包括端口
  • hostname 主机名
  • pathname url中的路径部分
  • protocol 协议 一般是http、https
  • search 查询字符串

举例:5秒后自动跳转到百度。

有时候,当我们访问一个不存在的网页时,会提示5秒后自动跳转到指定页面,此时就可以用到location

<script>
 setTimeout(function () {
  location.href = "http://www.baidu.com";
 }, 5000);
</script>

location.reload():重新加载,这个加载是  全局刷新,让整个文档重新解析了一遍,一般不建议使用

setTimeout(function(){
   //3秒之后让网页整个刷新
 window.location.reload();  
},3000)

navigator对象

window.navigator 的一些属性可以获取客户端的一些信息。

  • userAgent:系统,浏览器)
  • platform:浏览器支持的系统,win/mac/linux
console.log(navigator.userAgent);
console.log(navigator.platform);

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
两个DIV等高的JS的实现代码
Dec 23 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
Apr 07 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
Sep 23 Javascript
全面了解addEventListener和on的区别
Jul 14 Javascript
html判断当前页面是否在iframe中的实例
Nov 30 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
解决jquery的ajax调取后端数据成功却渲染失败的问题
Aug 08 jQuery
vue中引入第三方字体文件的方法示例
Dec 17 Javascript
react中Suspense的使用详解
Sep 01 Javascript
微信小程序图片右边加两行文字的代码
Apr 23 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
Jan 29 Javascript
javascript自定义右键菜单插件
Dec 16 #Javascript
js中的面向对象之对象常见创建方法详解
Dec 16 #Javascript
js实现数字滚动特效
Dec 16 #Javascript
NUXT SSR初级入门笔记(小结)
Dec 16 #Javascript
js实现内置计时器
Dec 16 #Javascript
js实现秒表计时器
Dec 16 #Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
Dec 16 #Javascript
You might like
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
MySQL数据源表结构图示
2008/06/05 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
谈谈JS中的!!
2017/12/07 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
销售心得体会
2014/01/02 职场文书
大学生旷课检讨书
2014/01/22 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
施工安全责任协议书
2016/03/23 职场文书
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL