BOM对象

BOM对象

ECMAScript + BOM + DOM

BOM(Browser Object Model)浏览器对象模型 BOM 使 JavaScript 有能力与浏览器“对话” BOM尚无正式标准,但是浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性(window)

window对象

  • 表示浏览器窗口,所有浏览器都支持 window 对象

  • 所有 JavaScript 全局的对象、函数以及变量均自动成为 window 对象的成员[属性和方法]

  • 全局变量是 window 对象的属性

  • 全局函数是 window 对象的方法

  • window对象是BOM模型中的顶层对象,因此所有BOM模型中的对象都是该对象的子对象

  • HTML DOM 的 document 也是 window 对象的属性之一

子对象作用
document文档对象用于操作页面元素
location地址对象用于操作URL地址
navigator浏览器对象用于获取浏览器版本信息
history历史对象用于操作浏览器历史
screen屏幕对象用于操作屏幕的高度和宽度

属性
属性名说明
closed返回一个布尔值,用于判断窗口是否已经关闭。
  • window对象的所有子对象都是window对象的属性

  • 所有的全局变量也都是 window 对象的属性

方法

窗口控制

方法名说明
open([url],[_blank],[widthheight
close()关闭当前页面
moveTo(x,y)移动窗口到指定坐标
moveBy(x,y)相对当前位置移动
resizeTo(x,y)窗口大小调整到指定宽高
resizeBy(+w,+h)(可以是正、负数值)窗口大小增减宽高
 
<input type="button" value="打开窗口" name="" id="" onclick="openWin()">
<input type="button" value="关闭窗口" name="" id="" onclick="closeWin()">
<input type="button" value="判断窗口" name="" id="" onclick="panduanWin()">
<input type="button" value="移动窗口" name="" id="" onclick="moveWin()">
<input type="button" value="调整窗口大小" name="" id="" onclick="resizeWin()">
<script>
  function openWin(){
        // myWindow = window.open('http://www.baidu.com','',"width=500,height=500,top=100,left=100");
        // window.open('','',"width=200,height=200");
        // window.open('','',"width=500,height=500,top=100,left=100");
        myWindow = window.open('','',"width=500,height=500,top=200,left=200");
        myWindow.document.write('hello world');
  }
    function closeWin(){
        // 注意: 接收一个打开的窗口的名字
        myWindow.close();

    }
    function panduanWin(){
        // 能够判断窗口的状态是关闭的还是打开的
        // false=没有关闭  true=关闭
        console.log(myWindow.closed);
    }
    function moveWin(){
        // moveTo(x,y) x,y 只能为正值
        // moveBy(100,-100) 当前坐标的基础 + 100,-100
        myWindow.moveBy(-100,100);
    }
    function resizeWin(){
        // resizeTo(x,y) x,y 只能为正值
        // resizeBy(100,-100) 当前坐标的基础 + 100,-100
        // myWindow.resizeTo(100,100);
        myWindow.resizeBy(-100,-100);
    }
</script>

注意:在使用moveTo,moveBy,resizeTo,resezeBy的时候,打开的窗口必须是自己的窗口,不能使用百度等在线的地址,会出现跨域的错误

弹窗方法

方法名说明
alert("信息内容")弹出一个警告框
confirm("信息内容")弹出一个确认对话框
prompt("信息内容",["默认输入内容"])弹出一个提示对话框
  • 如果用户点击确定按钮,则 confirm() 返回 true。如果点击取消按钮,则 confirm() 返回 false。

  • 在调用 confirm() 时,将暂停对 JavaScript 代码的执行,在用户作出响应之前,不会执行下一条语句。

任务计划

方法名说明
setInterval("javascript语句",毫秒)周期性执行计时器(执行多次)
clearInterval(计时器)取消计时器
setTimeout("javascript语句",毫秒)定时执行计时器(只执行一次)
clearTimeout(计时器)取消计时器
// 只执行一下
setTimeout(function(){
    alert('欢迎光临');
},1000);
// 周期性定时器
setInterval(function(){
    alert('hello world');
}, 1000);

一般情况下,打开网页的时候弹出的广告就使用setTimeout,因为只要打开页面,就需要弹出广告,并且只弹出一次

案例1:发送验证码功能

 

location对象

location 对象用于获得当前页面的地址 (URL),或把浏览器重定向到新的页面

window.location="https://www.baidu.com/"
<a id='a1' href="http://www.baidu.com">百度</a>
<script>
  var a1= document.getElementById('a1');
    a1.onclick = function(){
        // 重定向到淘宝
        window.location = "http://www.taobao.com";
        // 阻止默认事件的发生
        return false;
    }  
</script>

属性
属性名说明
pathname返回当前页面的路径和文件名。
href返回当前页面的 URL
hostname返回域名
port返回端口
protocol返回协议
search返回传值部分

修改href的值

location.href="https://www.baidu.com/"
console.log(window.location.pathname);  // 返回文件名和路径地址
// console.log(location.pathname); // 可以省略window
console.log(location.href);  // 返回当前页面的url路径
console.log(location.hostname); // 返回域名 127.0.0.1
console.log(location.port); // 返回端口号 5500
console.log(location.protocol); // 返回协议 http
console.log(location.search); // 返回参数值
方法
方法名说明
reload([true])刷新
replace("url")跳转到新页面

多种跳转方式

location.replace("https://www.qtummatrix.com/") // 替换当前路径
window.location  ='' // 跳转到对应的页面
window.location.href = '' // 跳转到对应的页面
window.open('url')

history对象

history对象是JavaScript中的一种默认对象,该对象可以用来存储客户端浏览器窗口最近浏览过的历史网址。通过History对象的方法,可以完成类似于浏览器窗口中的前进、后退等按钮的功能

属性名说明
length浏览器窗口的历史列表中的网页个数
方法
方法名说明
go(num)该方法可以直接跳转到某一个已经访问过的URL。
forward()该方法可以前进到下一个访问过的URL,等价于go(1)
back()该方法可以返回到上一个访问过的URL,等价于go(-1)

back()表示返回到上一页面,效果相当于go(-1);

forward()表示返回到下一页面,效果相当于go(1);

go()用于指定页的跳转,比如go(-2)表示返回到浏览过的前两个页面

思考: history.go(0)是什么效果

navigator对象

navigator对象,也称为浏览器对象,该对象包含了浏览器的整体信息,如浏览器名称、版本号等

属性名说明
appName返回浏览器的名称
appVersion返回浏览器的版本号
browserLanguage返回当前浏览器的语言。[不兼容]
platform返回运行浏览器的操作系统或硬件平台
cookieEnabled检测浏览器是否支持Cookie。该属性值为布尔类型,如果浏览器支持Cookie则返回true,否则返回false
userAgent一个只读的字符串,获取浏览器用于 HTTP 请求的用户代理头的值

IE11 - userAgent

低版本IE7 - userAgent

Chrome - userAgent

Safari - userAgent

火狐 - userAgent

appVersion: "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome

userAgent参数:

  • Mozilla:是Netscape浏览器的内核 Mozilla最开始是网景公司的,在userAgent看到她表示可以支持html标准框架;因为IE浏览器也是支持html标准框架的,所以最开始为了拿到含有标准框架的页面,也把userAgent设置成了Mozilla,

  • windows NT:是微软发布的桌面端操作系统,一般指window电脑

  • Trident:IE浏览器的内核,IE、傲游、世界之窗浏览器、腾讯TT等都使用这个内核

  • MSIE:全称为Microsoft Internet Explorer,是微软公司的网页浏览器

  • compatible:兼容版本

  • Macintosh:Mac的全拼,一般指苹果公司的计算机

  • AppleWebKit:是苹果公司开发的浏览器核心;但后来谷歌公司和它合作,你下载个谷歌浏览器看看里面也是用了AppleWebKit核心

  • KHTML:

  • Gecko:是一个排版引擎,这个排版引擎最开始也是网景公司开发的

  • webkit:这个内核是safari的,在2005年苹果进行了开源

注意:chrome浏览器使用的是webkit的一个分支,命名为chromium,他在自己的浏览器中加入了chrome和safae两个名字;后来有了新的内核Blink

案例:使用userAgent判断是否为低版本IE浏览器

if(navigator.userAgent.indexOf("MSIE") > -1){
    console.log("低版本IE浏览器");
}else{
    console.log("普通浏览器");
}

案例:判断是否是手机端,是否要跳转手机端页面

if(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)){
    window.location.href = ''; // 手机端 
}else{
    window.location.href = ''; // 电脑
}

screen对象

  1. screen对象是一个由JavaScript自动创建的对象,该对象的作用主要是描述客户端的显示器的信息,例如屏幕的分辨率、可用颜色数等。

  2. screen对象是一个全局对象,该对象中存放的都是静态属性,这些属性值是只读的

属性名说明
height屏幕的高度,单位为像素
width屏幕的宽度,单位为像素
colorDepth颜色深度
availHeight显示器可用的屏幕高度,单位为像素。(不含任务栏)
availWidth显示器可用的屏幕宽度,单位为像素

今天作业

  1. 创建一个表单,对表单中的用户名/密码/电话号码进行验证 如果用户名长度在5-10位之间,并且以字母开头 密码全都是数字 电话号码都是数字并且长度为11位,并且第一位是1,那么就提交到msg.php 页面,否则就弹窗输出错误提示 页面加载完毕,在页面弹出登录窗口,点击 X 关闭窗口(类似于知乎网站没有登陆的时候,访问时遮罩层的效果)

encodeURIComponent() 函数

encodeURIComponent() 函数可把字符串作为 URI 组件进行编码。 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。 其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

var uri="http://w3cschool.cc/my test.php?name=ståle&car=saab";
document.write(encodeURIComponent(uri));
// 结果:http%3A%2F%2Fw3cschool.cc%2Fmy%20test.php%3Fname%3Dst%C3%A5le%26car%3Dsaab
decodeURIComponent解码

decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/885491.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解TCP协议(三次握手四次挥手)

1. TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 在这个例子中&#xff0c;首先客户端主动发起连接、发送请求&#xff0c;然后服务器端响应请求&#xff0c;然后客户端主动关闭连接。两条竖线表示通讯的两端&#xff0c;从上…

车视界系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;汽车品牌管理&#xff0c;汽车颜色管理&#xff0c;用户管理&#xff0c;汽车信息管理&#xff0c;汽车订单管理系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;汽车信息&#xff0c;我…

算法打卡:第十一章 图论part11

今日收获&#xff1a;Floyd 算法&#xff0c;A * 算法&#xff0c;最短路算法总结 1. Floyd 算法 题目链接&#xff1a;97. 小明逛公园 思路&#xff1a;Floyd用于解决多源最短路问题&#xff0c;对边的正负权值没有要求。核心是动态规划 &#xff08;1&#xff09;dp数组的…

Springboot-多数据源

文章目录 一、架构二、实现过程2.1 第一步&#xff1a;引入依赖pom2.2 第二步&#xff1a;创建application.yml配置2.3 第三步&#xff1a;创建架构的文件夹MybatisPlusConfigFirstDataSourceConfigSecondDataSourceConfig 实现功能&#xff0c;在不同的文件夹使用不同的库 一、…

基于Hive和Hadoop的电商消费分析系统

本项目是一个基于大数据技术的电商消费分析系统&#xff0c;旨在为用户提供全面的电商消费信息和深入的消费行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理&#xff0c;利用 MapReduce 进行数据分析和处理&#xff0c;通过 Sqoop 实现数据的导入导出&#xff0c;以 S…

Updates were rejected because the tip of your current branch is behind 的解决方法

1. 问题描述 当我们使用 git push 推送代码出现以下问题时&#xff1a; 2. 原因分析 这个错误提示表明当前本地分支落后于远程分支&#xff0c;因此需要先拉取远程的更改。 3. 解决方法 1、拉取远程更改 在终端中执行以下命令&#xff0c;拉取远程分支的更新并合并到本地…

基于Arduino的L298N电机驱动模块使用

一.简介&#xff1a; L298N作为电机驱动芯片&#xff0c;具有驱动能力强&#xff0c;发热量低&#xff0c;抗干扰能力强的特点,一个模块可同时驱动两个直流电机工作&#xff0c;能够控制电机进行正转、反转、PWM调速。 说明&#xff1a; 1&#xff09;12V输入端口接入供电电压…

cpp,git,unity学习

c#中的? 1. 空值类型&#xff08;Nullable Types&#xff09; ? 可以用于值类型&#xff08;例如 int、bool 等&#xff09;&#xff0c;使它们可以接受 null。通常&#xff0c;值类型不能为 null&#xff0c;但是通过 ? 可以表示它们是可空的。 int? number null; // …

数据分析-28-交互式数据分析EDA工具和低代码数据科学工具

文章目录 1 数据分析的七步指南1.1 第一步:问题定义和数据采集1.2 第二步:数据清洗和预处理1.3 第三步:数据探索和分析1.4 第四步:模型建立和分析1.5 第五步:数据可视化1.6 第六步:结果解释和报告1.7 第七步:部署和维护1.8 基础的数据分析库1.9 低代码数据科学工具2 EDA…

Linux网络操作命令与函数全面总结

1. 引言 Linux作为服务器和开发平台&#xff0c;网络操作是其核心功能之一。本文旨在全面总结Linux系统中的网络操作方法&#xff0c;包括命令行工具和编程接口&#xff0c;帮助读者深入理解Linux网络管理的机制。 2. 命令行工具 2.1 ping 命令 ping 命令用于测试网络连接和…

css的背景background属性

CSS的background属性是一个简写属性&#xff0c;它允许你同时设置元素的多个背景相关的子属性。使用这个属性可以简化代码&#xff0c;使其更加清晰和易于维护。background属性可以设置不同的子属性。 background子属性 定义背景颜色 使用background-color属性 格式&#x…

了解Webpack并处理样式文件

目录 引入定义安装和使用配置文件命令配置单独文件指定文件 处理样式css-loader使用 style-loaderless-loaderPostCSSpostcss-loaderpostcss-preset-env 引入 随着前端的快速发展&#xff0c;目前前端的开发已经变的越来越复杂了&#xff1a; 比如开发过程中我们需要通过模块化…

python UNIT 3 选择与循环(2)

目录 1。循环的优化 经典优化分析&#xff1a; 未优化的代码&#xff1a; 细节分析&#xff1a; 优化后的代码&#xff1a; 优化的细节&#xff1a; 性能对比 优化的关键在于&#xff1a; 经典习题讲解&#xff1a;(紫色的解析请重点关注一下) 1。例三 个人代码解析…

Qt网络编程——QTcpServer和QTcpSocket

文章目录 核心APITCP回显服务器TCP回显客户端 核心API QTcpServer用于监听端口和获取客户端连接 名称类型说明对标原生APIlisten(const QHostAddress&, quint16 port)方法绑定指定的地址和端口号&#xff0c;并开始监听bind和listennextPendingConnection()方法从系统中获…

大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Java-IO模型

所谓I/O就是计算机内存与外部设备之间拷贝数据的过程。由于CPU访问内存的速度远远高于外部设备&#xff0c;因此CPU是先把外部设备的数据读到内存里&#xff0c;然后再进行处理。对于一个网络I/O通信过程&#xff0c;比如网络数据读取&#xff0c;会涉及两个对象&#xff0c;一…

Ubuntu 开机自启动 .py / .sh 脚本,可通过脚本启动 roslaunch/roscore等

前言 项目中要求上电自启动定位程序&#xff0c;所以摸索了一种 Ubuntu 系统下开机自启动的方法&#xff0c;开机自启动 .sh 脚本&#xff0c;加载 ROS 环境的同时启动 .py 脚本。在 . py 脚本中启动一系列 ROS 节点。 一、 .sh 脚本的编写 #!/bin/bash # gnome-terminal -- …

javaWeb,Maven

前端打包的程序放在nginx中 查看哪个程序占用了80端口号 Maven&#xff1a;

rk3399开发环境的介绍

零. 前言 由于Bluez的介绍文档有限&#xff0c;以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求&#xff0c;加上网络上其实没有一个完整的介绍Bluez系列的文档&#xff0c;所以不管是蓝牙初学者还是蓝牙从业人员&#xff0c;都有不小的难度&#xff0c;学习曲线也相…

生产绩效考核管理的六大指标

生产绩效考核管理的六大指标 绩效考核是指生产部所有人员通过不断丰富自己的知识、提高自己的技能、改善自己的工作态度&#xff0c;努力创造良好的工作环境及工作机会&#xff0c;不断提高生产效率、提高产品质量、提高员工士气、降低成本以及保证交期和安全生产的结果和行为…