• js-WebApi笔记之BOM


    目录

    window对象

    定时器-延迟函数

    location对象

    navigator对象

    histroy对象

    本地存储

    localStorage

    sessionStorage

    localStorage 存储复杂数据类型


    window对象

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

    • window对象是一个全局对象,也可以说是JavaScript中的顶级对象

    • 像document、alert()、console.log()这些都是window的属性,基本BOM的属性和方法都是window的

    • 所有通过var定义在全局作用域中的变量、函数都会变成window对象的属性和方法

    • window对象下的属性和方法调用的时候可以省略window

    定时器-延迟函数

    语法

    setTimeout(回调函数, 延迟时间) 

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

    间歇函数 setInterval : 每隔一段时间就执行一次, , 平时省略window

    清除延时函数:

    clearTimeout(timerId) 

    注意点

    1. 延时函数需要等待,所以后面的代码先执行

    2. 返回值是一个正整数,表示定时器的编号

    1. <script>
    2. // 定时器之延迟函数
    3. // 1. 开启延迟函数
    4. let timerId = setTimeout(function () {
    5. console.log('我只执行一次')
    6. }, 3000)
    7. // 1.1 延迟函数返回的还是一个正整数数字,表示延迟函数的编号
    8. console.log(timerId)
    9. // 1.2 延迟函数需要等待时间,所以下面的代码优先执行
    10. // 2. 关闭延迟函数
    11. clearTimeout(timerId)
    12. script>

    location对象

    location (地址) 它拆分并保存了 URL 地址的各个组成部分, 它是一个对象

    属性/方法说明
    href属性,获取完整的 URL 地址,赋值时用于地址的跳转
    search属性,获取地址中携带的参数,符号 ?后面部分
    hash属性,获取地址中的啥希值,符号 # 后面部分
    reload()方法,用来刷新当前页面,传入参数 true 时表示强制刷新location (地址) 它拆分并保存了 URL 地址的各个组成部分, 它是一个对象
    1. DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8" />
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    7. <title>Documenttitle>
    8. head>
    9. <body>
    10. <p>5秒后跳转到淘宝p>
    11. <button>刷新button>
    12. <script>
    13. console.log(window.location)
    14. // location对象与地址相关的信息
    15. console.log(location.href) // 完整地址
    16. console.log(location.search) // 查询参数 地址?后面的参数 ?k=v&k=v
    17. const str = location.search.substring(1)
    18. const arr = str.split('&') // ['a=1','b=2']
    19. for (let i = 0; i < arr.length; i++) {
    20. const key = arr[i].split('=')[0]
    21. const val = arr[i].split('=')[1]
    22. console.log(key, val)
    23. }
    24. console.log(location.hash) // '#....'
    25. document.querySelector('button').addEventListener('click', function () {
    26. location.reload(true) // true 强制刷新
    27. })
    28. // 5秒后跳转到淘宝
    29. let num = 5
    30. // setTimeout(function () {
    31. // location.href = 'http://www.taobao.com'
    32. // }, 5000)
    33. setInterval(function () {
    34. num--
    35. if (num === 0) {
    36. location.href = 'http://www.taobao.com'
    37. } else {
    38. document.querySelector('p').innerHTML = `${num}秒后跳转到淘宝`
    39. }
    40. }, 1000)
    41. script>
    42. body>
    43. html>

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

    常用属性和方法:

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

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

    histroy对象

    history (历史)是对象,主要管理历史记录, 该对象与浏览器地址栏的操作相对应,如前进、后退等

    1. <button class="back">←后退button>
    2. <button class="forward">前进→button>
    3. <script>
    4. // histroy对象
    5. // 1.前进
    6. const forward = document.querySelector('.forward')
    7. forward.addEventListener('click', function () {
    8. // history.forward()
    9. history.go(1)
    10. })
    11. // 2.后退
    12. const back = document.querySelector('.back')
    13. back.addEventListener('click', function () {
    14. // history.back()
    15. history.go(-1)
    16. })
    17. script>

    本地存储

    本地存储:将数据存储在本地浏览器中

    好处:

    1、页面刷新或者关闭不丢失数据,实现数据持久化

    2、容量较大,sessionStorage和 localStorage 约 5M 左右

    localStorage

    作用: 数据可以长期保留在本地浏览器中,刷新页面和关闭页面,数据也不会丢失

    特性:以键值对的形式存储,并且存储的是字符串, 省略了window

     存储数据

    localStorage.setltem(key, value)

    读取数据

    localStorage.getltem(key)

    删除数据

    localStorage.removeltem(key)

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>本地存储-localstoragetitle>
    8. head>
    9. <body>
    10. <script>
    11. // 本地存储 - localstorage 存储的是字符串
    12. // 1. 存储
    13. localStorage.setItem('age', 18)
    14. // 2. 获取
    15. console.log(typeof localStorage.getItem('age'))
    16. // 3. 删除
    17. localStorage.removeItem('age')
    18. script>
    19. body>
    20. html>

    sessionStorage

    特性:

    • 用法跟localStorage基本相同

    • 区别是:当页面浏览器被关闭时,存储在 sessionStorage 的数据会被清除

    存储:sessionStorage.setItem(key,value)

    获取:sessionStorage.getItem(key)

    删除:sessionStorage.removeItem(key)

    localStorage 存储复杂数据类型

    问题:本地只能存储字符串,无法存储复杂数据类型.

    解决:需要将复杂数据类型转换成 JSON字符串,在存储到本地

    语法:JSON.stringify(复杂数据类型)

    JSON字符串:

    • 首先是1个字符串

    • 属性名使用双引号引起来,不能单引号

    • 属性值如果是字符串型也必须双引号

    1. <script>
    2. // 本地存储复杂数据类型
    3. const goods = {
    4. name: '小米',
    5. price: 1999
    6. }
    7. // localStorage.setItem('goods', goods)
    8. // console.log(localStorage.getItem('goods'))
    9. // 1. 把对象转换为JSON字符串 JSON.stringify
    10. localStorage.setItem('goods', JSON.stringify(goods))
    11. // console.log(typeof localStorage.getItem('goods'))
    12. script>

    问题:因为本地存储里面取出来的是字符串,不是对象,无法直接使用

    解决: 把取出来的字符串转换为对象

    语法:JSON.parse(JSON字符串)

    1. <body>
    2. <script>
    3. // 本地存储复杂数据类型
    4. const goods = {
    5. name: '小米',
    6. price: 1999
    7. }
    8. // localStorage.setItem('goods', goods)
    9. // console.log(localStorage.getItem('goods'))
    10. // 1. 把对象转换为JSON字符串 JSON.stringify
    11. localStorage.setItem('goods', JSON.stringify(goods))
    12. // console.log(typeof localStorage.getItem('goods'))
    13. // 2. 把JSON字符串转换为对象 JSON.parse
    14. console.log(JSON.parse(localStorage.getItem('goods')))
    15. script>

  • 相关阅读:
    通过Lambda函数的方式获取属性名称
    HTML5期末大作业:基于HTML+CSS+JavaScript仿蘑菇街购物商城设计毕业论文源码
    docker下的onlyoffice安装(for seafile)
    【JVM】垃圾回收
    Spring,SpringMVC,SpringBoot,SpringCloud有什么区别?
    Running job: job_1709516801756_0003
    uniapp开发h5引入第三方js(sdk)
    二十三、Redis集群
    【Kafka从成神到升仙系列 三】你真的了解 Kafka 的元数据嘛
    可视化数据科学平台在信贷领域应用系列六:自动机器学习(上篇)
  • 原文地址:https://blog.csdn.net/m0_56713342/article/details/134491565