day6bom操作浏览器

news2024/11/17 21:54:34

apis-day6bom-操作浏览器

文章目录

  • apis-day6bom-操作浏览器
    • 1、window对象
      • 1.1BOM(浏览器对象模型
      • 1.2定时器-延时函数
      • 1.3JS执行机制(重要)
      • 1.4 location对象
      • 1.5 navigator对象
      • 1.6histroy对象(用的少)
    • 2、swiper插件
    • 3、本地存储(重要)
    • 4、综合案例(下一讲)
    • 5、拓展:自定义属性
        • data-自定义属性:

1、window对象

学习目标:

  • 依托 BOM 对象实现对历史、地址、浏览器信息的操作或获取
  • 具备利用本地存储实现学生信息表案例的能力

1.1BOM(浏览器对象模型

1.BOM(Browser Object Model ) 是浏览器对象模型

在这里插入图片描述

2.window 是浏览器内置中的全局对象,我们所学习的所有 Web APIs 的知识内容都是基于 window 对象实现的

3.window 对象下包含了 navigator、location、document、history、screen 5个属性,即所谓的 BOM (浏览器对象模型)

4.document 是实现 DOM 的基础,它其实是依附于 window 的属性。

5.注:依附于 window 对象的所有属性和方法,使用时可以省略 window

1.2定时器-延时函数

JavaScript 内置的一个用来让代码延迟执行的函数,叫 setTimeout

语法:

setTimeout(回调函数,等待的毫秒数)

setTimeout 仅仅只执行一次,所以可以理解为就是把一段代码延迟执行, 平时省略window

清除延时函数:

let timer = setTimeout(回调函数,等待的毫秒数)
clearTimeout(timer)

案例:5秒钟之后消失的广告

需求:5秒钟之后,广告自动消失

分析:

①:设置延时函数

②:隐藏元素

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        span {
            color: red;
        }
    </style>
</head>

<body>
    <a href="https://www.bilibili.com/">欢迎来到Bilibili,<span>5</span>秒后将自动跳转</a>
</body>
<script>
    let a = document.querySelector('a')
    let num = 5
    let timer = setInterval(function () {
        num--
        a.innerHTML = `欢迎来到Bilibili,<span>${num}</span>秒后将自动跳转`
        if (num === 0) {
            clearInterval(timer)
            location.href='https://www.bilibili.com/'
        }
    }, 1000)
    
</script>

</html>

结合递归函数可以使用setTimeout实现setinterval一样的功能

<div class="clock"></div>
<script>
    let clock = document.querySector('.clock')
    function myInterval(){
        let d = new Date();
        clock.innerText = d.toLocaleString();
         //延时任务,自调用
        setTimeout(muInterval,1000)
    }
    //启动定时任务
</script>

两种定时器对比:

延时函数:

  • setInterval 的特征是重复执行,首次执行会延时
  • setTimeout 的特征是延时执行,只执行 1 次
  • setTimeout 结合递归函数,能模拟 setInterval 重复执行
  • clearTimeout 清除由 setTimeout 创建的定时任务

1.3JS执行机制(重要)

JS 是单线程

​ JavaScript 语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。这是因为 Javascript 这 门脚本言诞生的使命所致——JavaScript 是为处理页面中用户的交互,以及操作 DOM 而诞生的。比如我们对某个 DOM 元素进行添加和删除操作,不能同时进行。 应该先进行添加,之后再删除。

​ 单线程就意味着,所有任务需要排队一个任务结束,才会执行后一个任务。这样所导致的问题是: 如果 JS 执行的时间过长,这样就会造成页面的渲染不连贯,导致页面渲染加载阻塞的感觉。

同步和异步

为了解决这个问题,利用多核 CPU 的计算能力,HTML5 提出 Web Worker 标准,允许 JavaScript 脚本创建多个线程。于是,JS 中出现了同步和异步。

同步

前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。比如做饭的同步 做法:我们要烧水煮饭,等水开了(10分钟之后),再去切菜,炒菜。

异步

你在做一件事情时,因为这件事情会花费很长时间,在做这件事的同时,你还可以去处理其他事情。比如做饭的异步做法,我们在烧水的同时,利用这10分钟,去切菜,炒菜

他们的本质区别: 这条流水线上各个流程的执行顺序不同

同步任务

同步任务都在主线程上执行,形成一个执行栈

异步任务

JS 的异步是通过回调函数实现的。

一般而言,异步任务有以下三种类型:

1、普通事件,如 click、resize 等

2、资源加载,如 load、error 等

3、定时器,包括 setInterval、setTimeout 等

异步任务相关添加到任务队列中(任务队列也称为消息队列)。

JS执行机制

  1. 先执行执行栈中的同步任务。

  2. 异步任务放入任务队列中。

  3. 一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行

图例小结

在这里插入图片描述

由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环( event loop)。

1.4 location对象

location 的数据类型是对象,它拆分并保存了 URL 地址的各个组成部分

常用属性和方法:

  • href 属性获取完整的 URL 地址,对其赋值时用于地址的跳转

    //可以得到当前文件的URL地址
    console.log(location.href)
    //location.href('http://www.itcast.cn')                                                                           
    
  • search 属性获取地址中携带的参数,符号 ?后面部分

    console.log(location.search)
    
  • hash 属性获取地址中的啥希值,符号 # 后面部分

console.log(location.hash)
  • reload 方法用来刷新当前页面,传入参数 true 时表示强制刷新
<button>点击刷新</button>
<script>
    let btn = document.querySelector('button')
    btn.addEventListener('click',function(){
        location.reload(true)
        //强制刷新  类似ctrl+fs
    })
</script>

1.5 navigator对象

navigator的数据类型是对象,该对象下记录了浏览器自身的相关信息

常用属性和方法:

通过 userAgent 检测浏览器的版本及平台

// 检测 userAgent(浏览器信息)
!(function () {
const userAgent = navigator.userAgent
// 验证是否为Android或iPhone
const android = userAgent.match(/(Android);?[\s\/]+([\d.]+)?/)
const iphone = userAgent.match(/(iPhone\sOS)\s([\d_]+)/)
// 如果是Android或iPhone,则跳转至移动站点
if (android || iphone) {
location.href = 'http://m.itcast.cn'
}
})()

1.6histroy对象(用的少)

history 的数据类型是对象,该对象与浏览器地址栏的操作相对应,如前进、后退、历史记录等

常用属性和方法:

history对象方法作用
back()可以后退功能
forward()前进功能
go(参数)前进后退功能 参数如果是1前进1个页面 如果是-1个页面

history 对象一般在实际开发中比较少用,但是会在一些 OA 办公系统中见到

2、swiper插件

插件: 就是别人写好的一些代码,我们只需要复制对应的代码,就可以直接实现对应的效果

学习插件的基本过程

熟悉官网,了解这个插件可以完成什么需求 https://www.swiper.com.cn/

看在线演示,找到符合自己需求的demo https://www.swiper.com.cn/demo/index.html

查看基本使用流程 https://www.swiper.com.cn/usage/index.html

查看APi文档,去配置自己的插件 https://www.swiper.com.cn/api/index.html

注意: 多个swiper同时使用的时候, 类名需要注意区分

3、本地存储(重要)

3.1 本地存储特性

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在 本地存储大量的数据,HTML5规范提出了相关解决方案。

1、数据存储在用户浏览器中

2、设置、读取方便、甚至页面刷新不丢失数据

3、容量较大,sessionStorage和localStorage约 5M 左右(以前的1M就可存储几万字)

3.2 localStorage

1、生命周期永久生效,除非手动删除 否则关闭页面也会存在

2、可以多窗口(页面)共享(同一浏览器可以共享)

3、以键值对的形式存储使用

存储数据:

localStorage.setItem(key, value)

获取数据:

localStorage.getItem(key)

删除数据:

localStorage.removeItem(key)

存储复杂数据类型存储

-本地只能存储字符串,无法存储复杂数据类型.需要将复杂数据类型转换成JSON字符串,在存储到本地

JSON.stringify(复杂数据类型)

-将复杂数据转换成JSON字符串 存储 本地存储中

JSON.parse(JSON字符串)

-将JSON字符串转换成对象 取出 时候使用

3.3 sessionStorage(了解)

1、生命周期为关闭浏览器窗口

2、在同一个窗口(页面)下数据可以共享

3、以键值对的形式存储使用

4、用法跟localStorage 基本相同

4、综合案例(下一讲)

5、拓展:自定义属性

固有属性:

标签天生自带的属性 比如class id title等, 可以直接使用点语法操作

自定义属性:

由程序员自己添加的属性,在DOM对象中找不到, 无法使用点语法操作,必须使用专门的API

getAttribute(‘属性名’) // 获取自定义属性

setAttribute(‘属性名’, ‘属性值’) // 设置自定义属性

removeAttribute(‘属性名’) // 删除自定义属性

data-自定义属性:

传统的自定义属性没有专门的定义规则,开发者随意定值,不够规范,所以在html5中推出来了专门的data-自定义属性 在

标签上一律以data-开头

在DOM对象上一律以dataset对象方式获取

<div class="box" data-id="10"></div>
<script>
    let box = document.querySelector('.box')
    console.log(box.dataset.id)//10
</script>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当前的数字化,CIO 们到底需要什么?

“做数字化&#xff0c;没人、没钱、没资源&#xff0c;但还要做效果&#xff0c;该怎么办&#xff1f;” 这是很多 CIO 当下都面临的困境。 那么&#xff0c;对于不同企业来说&#xff0c;到底该如何有效探索数字化转型之路呢&#xff1f; 数字化转型的三个阶段 Gartner 把…

简易黑客初级教程:黑客技术,分享教学

前言 第一节&#xff0c;伸展运动。这节操我们要准备道具&#xff0c;俗话说&#xff1a;“工欲善其事&#xff0c;必先利其器”(是这样吗?哎!文化低……)说得有道理&#xff0c;我们要学习黑客技术&#xff0c;一点必要的工具必不可少。 1&#xff0c;一台属于自己的可以上…

【面试题】2023 中级前端面试题

前言 从前端学习到找一份合适的工作&#xff0c;大大小小的面试必不可少&#xff0c;所以我对初级前端面试题进行了初步整理&#xff0c;也方便自己查阅&#xff0c;也希望对小伙伴们有所帮助&#xff01; 给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&…

C语言——内存中数据存储的详解(整型与浮点型)

文章目录1.数据类型的详细介绍1.1数据类型介绍1.2类型的基本归类整型类型浮点类型构造类型指针类型空类型2.整型在内存中的存储2.1原码、反码、补码2.2大小端存储大小端存储存在的意义编写一个程序判断当前机器的存储方式是大端存储还是小端存储2.3经典习题练习一练习二练习三c…

Prometheus部署Prometheus Server、Pushgateway、Node exporter、AlertManager

目录1. 安装Prometheus Server1.1 下载解压1.2 修改配置文件prometheus.yml1.3 启动Prometheus Server2. 安装Pushgateway2.1 下载解压2.2 启动Pushgateway3. 安装Node Exporter3.1 下载解压3.2 启动Node Exporter4. 安装Alertmanager4.1 下载解压4.2 启动Alertmanager1. 安装P…

CS5518 MIPI转LVDS转换方案芯片|DSI转LVDS转换方案芯片

CS5518 是一款MIPI DSI 至 LVDS 转换器方案芯片。 Capstone CS5518是一款MIPI DSI输入、LVDS输出转换芯片。MIPI DSI 支持多达4个局域网&#xff0c;每条通道以最大 1Gbps 的速度运行。LVDS支持18位或24位像素&#xff0c;25Mhz至154Mhz&#xff0c;采用VESA或JEIDA格式。它只…

CMake中target_sources的使用

CMake中的target_sources命令用于将源添加到target&#xff0c;其格式如下&#xff1a; target_sources(<target><INTERFACE|PUBLIC|PRIVATE> [items1...][<INTERFACE|PUBLIC|PRIVATE> [items2...] ...]) # general formtarget_sources(<target>[<…

网络安全之反序列化漏洞分析

简介 FastJson是alibaba的一款开源JSON解析库&#xff0c;可用于将Java对象转换为其JSON表示形式&#xff0c;也可以用于将JSON字符串转换为等效的Java对象分别通过toJSONString和parseObject/parse来实现序列化和反序列化。 使用 对于序列化的方法toJSONString()有多个重载…

LSTM反向传播原理——LSTM从零实现系列(2)

一、LSTM反向传播介绍 LSTM的反向传播过程相对复杂&#xff0c;主要因为其对应的控制门较多&#xff0c;而对于每一个控制门我们都需要求导&#xff0c;所以工作量较大。 首先我们根据LSTM结构图分析一下每个控制门的求导过程。在讲解反向传播之前&#xff0c;先了解一些要用到…

web课程设计网页规划与设计:鲜花网站设计——基于HTML+CSS+JavaScript制作网上鲜花网页设计(5页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

redis的热key、大key

目录 1.概述 2.查找方法 2.1.知道具体哪个key有问题 2.2.不知道具体哪个key有问题 3.处理方法 3.1.大key的处理方法 3.2.热key的处理方法 1.概述 大key&#xff1a; 含有较大数据或含有大量成员的Key称之为大Key&#xff0c;常见的大key如&#xff1a; String类型的Ke…

用友降运维成本实践:OceanBase替换MySQL,实现高可用

导语&#xff1a;随着业务模型的不断变化使运维难度越来越大&#xff0c;用友IT内部采用任务调度中心XXL-JOB和配置管理中心Nacos来实现公司IT分布式任务调度和微服务开发。但XXL-JOB和Nacos集群数量的增多又使其支撑系统MySQL难以招架。 为了寻找一款既能提供高可用又能统一管…

git常用命令(linux和windows通用)

本文的命令已可满足日常需求 配置用户信息 git config --global user.name “github用户名” git config --global user.email “github绑定邮箱"查看配置信息 git config --global user.name git config --global user.email~/.bashrc文件介绍 ~指当前用户的根目录&…

负载分担方式的双链路热备份配置

** 负载分担方式的双链路热备份配置 ** 实验要求和拓扑 负载分担方式的优点和主备方式的不同 负载分担可以每个ac都管理ap这样就避免了资源浪费&#xff0c;然后又作到了备份 主备方式则是&#xff0c;ap都交给一个ac&#xff0c;另一个ac只作为备份 实验拓扑 实验要求 配置…

全面上新!阿里 2023 版(Java 岗)面试突击手册,Github 已标星 37K

程序员面试背八股&#xff0c;几乎已经是互联网不可逆的一个形式了。自从面试**八股文火了之后&#xff0c;网上出现了不少 Java 相关的面试题&#xff0c;很多朋友盲目收集背诵&#xff0c;**但网上大部分的面试题&#xff0c;大多存在这几个问题&#xff1a;第一&#xff0c;…

剑指 Offer 53 - II. 0~n-1中缺失的数字

摘要 剑指 Offer 53 - II. 0&#xff5e;n-1中缺失的数字 一、二分法 1.1 二分法分析 排序数组中的搜索问题&#xff0c;首先想到 二分法 解决。 根据题意&#xff0c;数组可以按照以下规则划分为两部分。 左子数组&#xff1a; nums[i]i&#xff1b;右子数组&#xff1a;…

Eolink 11月企业与产品动态速览!

本月&#xff0c;Eolink IDEA 插件 “Eolink ApiKit” 最新版本 1.1.3 发布&#xff0c;可进行方法 API 解析的插件&#xff0c;可自动生成注释&#xff0c;可分析方法出入参等。 此外&#xff0c;Eolink 再获多项荣誉与认证&#xff0c;持续行业领先&#xff01;一起来看看 11…

我今天吃了SHI,请对下联

1. 跨平台终端 Tabby(前身是 Terminus) 是一个可高度配置的终端模拟器和 SSH 或串口客户端&#xff0c;支持 Windows&#xff0c;macOS 和 Linux。 还有一些功能比较常见和易于使用的&#xff1a; 集成了 SSH&#xff0c;Telnet 客户端和连接管理器&#xff0c;可以在 SSH 会…

JAVA SCRIPT设计模式--行为型--设计模式之Mediator中介者模式(17)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能&#xff0c;所以不可能像C&#xff0c;JAVA等面向对象语言一样严谨&#xff0c;大部分程序都附上了JAVA SCRIPT代码&#xff0c;代码只是实现了设计模式的主体功能&#xff0c;不代…

图的初体验

最近周赛有两个差不多的题目&#xff0c;都是关于图的&#xff0c;之前也没有怎么练过关于图的题目&#xff0c;来记录一下。 T1 力扣T320周赛&#xff1a;T3&#xff1a;到达首都的最少油耗 class Solution {//结果long result ;public long minimumFuelCost(int[][] roads…