BOM:浏览器对象模型

news2025/1/12 17:58:21

BOM的全称browser object mode

css不可调整的一般都是浏览器的部分,比如:浏览器的滚动条、地址栏、关闭按钮、刷新按钮。

BOM可以操作浏览器:

    1.弹出框

            //提示框

            // window.alert()

            //输入框

            // window.prompt()

            //询问框:返回值确定true,取消false

            // window.confirm()

    <script>
        /* 
        操作浏览器的统一语法都是window.XXX
        但是我们window其实是可以忽略不写的。

            只要能在浏览器中弹出一个框,统一都叫做弹出框
            1.提示框:alert('提示文本')的标准语法是:window.alert()
                弹出一个提示框
                表现形式:一个提示文本+确定按钮
                返回值:undefined
            2.输入框:window.prompt('提示文本')
                表现形式:一个提示文本+一个输入框+一个确定按钮+取消按钮
                返回值:当点击确定的时候返回值就是用户的输入的内容,当点击取消按钮的时候返回值是null
            3.询问框:window.confirm('提示文本')
                表现形式:一个提示文本+一个确定按钮+一个取消按钮
                返回值:当点击确定的时候返回true,当点击取消的时候返回false。

        */

    //    var res =  window.alert('哈哈哈')
    //    console.log(res);
    </script>


    2.得到浏览器可视窗口的尺寸

    /* 浏览器的可视窗口:注意:获取的宽度和高度是包含滚动条在内的。 */

            //获取浏览器宽度
            // window.innerWidth()
            // console.log(window.innerWidth);

            //获取浏览器高度
            // window.innerHeight()


    3.事件:

load(都加载完再执行),

resize(页面尺寸变化会触发),

scroll(页面滚动条发生变化触发)

   <script>
        /* 
            事件:只要是事件都有自己特定的触发条件
            1.load事件:当页面中所有的外部资源(html文件、css文件、图片、视频、音频)全部加载完毕才会执行load事件,什么时候资源加载完毕什么时候自动触发load事件。
                语法:window.onload = function(){
                    代码
                }
            2.resize事件:当页面的尺寸发生改变的时候就触发
                语法:window.onresize = function(){

                }
                只要页面尺寸发生改变,就会自动执行function中的代码
            3.scroll事件:当页面滚动条位置发生改变的时候就触发
                 语法:window.onscroll = function(){

                }
                只要滚动条动了,就会执行function中的代码
            注意:写事件的时候,事件名称前面要加on
        */
        // 等所有的外部资源加载完毕才会执行123
        // window.onload = function () {
        //     console.log('123');
        // }
        

        // 2

        // window.onresize = function(){
        //     console.log('改变了');
        // }

        // 3
        window.onscroll = function(){
            console.log('滚动了');
        }

    </script>

4.浏览器地址栏:location

页面跳转:href         刷新:reload

<body>
    <button id="btn">点我</button>
    <button id="btn2">新刷</button>
    <script>
        /* 
        1.href
            在window内有一个location属性,他是一个对象数据类型,里面存储了一些和地址栏相关的信息。
            window.location.href:单独拿到网址。
            window.location.href = '网址'==重新给href进行复制操作,可以实现达到网页跳转的效果,在本窗口跳转。
            按钮:实现点击按钮跳转到百度
        */
        //    console.log(window.location);
        //    console.log(window.location.href);
        //    window.location.href = 'http://www.baidu.com'


        var btn = document.getElementById('btn')
        btn.onclick = function(){
            window.location.href = 'http://www.baidu.com'
        }

        // 2.reload()===重新加载,其实就是刷新的意思
        // 语法:window.location.reload()

        // 案例:模仿刷新按钮,当点击按钮执行实现刷新的效果
        var btn2 = document.getElementById('btn2')
        btn2.onclick = function(){
            window.location.reload()
        }
       
    </script>
</body>

5.浏览器的标签页打开和关闭:open();close()

<body>
    <button id="btn1">打开</button>
    <button id="btn2">关闭</button>
    <script>
        /* 
            1.open()打开一个新的标签页,打开新的标签页的时候可以给一个网址,从而实现网页跳转效果。
                语法:window.open('地址')

                案例:当点击一个按钮的时候打开一个新的标签页,
            2.close():关闭标签页面
                语法:window.close()

                案例:点击一个按钮,关闭当前页面
        */
        var btn1 = document.getElementById('btn1')
        btn1.onclick = function(){
            window.open('http://www.baidu.com')
        }

        var btn2 = document.getElementById('btn2')
        btn2.onclick = function(){
            window.close()
        }

    </script>

6.浏览器页面卷去的尺寸(推荐兼容写法):

    /* 浏览器卷去的尺寸 */
        // 必须有   '<!DOCTYPE html>'
        // console.log(document.documentElement.scrollTop);
        // console.log(document.documentElement.scrollTop);
        // 没有  '<!DOCTYPE html>'
        // console.log(document.body.scrollTop);
        // console.log(document.body.scrollTop);

得到兼容写法:

    <script>
        
    // 两者都满足 保证永远有结果
        // 纵向卷去尺寸
        var scrollTop = document.documentElement.scrollTop || document.body.scrollTop
        console.log(scrollTop)
        // 横向卷去尺寸
        var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
        console.log(scrollLeft)

    </script>

 7.历史记录 history(),实现,页面跳转(上一页,下一页),刷新:

<body>

    页面1 
    <a href="2.html">去到页面2</a>
    <button id="forward">前进</button>
    <script>
        /* 
            研究历史记录其实就是模仿浏览器上的前进和回退按钮
            要求的前提是:页面必须有历史记录才行

            模仿前进和回退
            当点击前进按钮的时候需要去到2页面
             前进:window.history.forward()
             回退:window.history.back()
             去到指定的历史记录的页面:window.history.go(数字)
                写数字0:去到本页面,其实刷新的意思
                写正整数:比如写的是1,意思就是前进1页,写的是2,意思就是前进2页
                写负整数:比如写的是-1,意思就是回退1页,写的是-1,意思就是回退2页
        */
       var forward = document.getElementById('forward')
       forward.onclick = function(){
            // 去到下一个页面
            // window.history.forward()
            window.history.go(1)
            // 去到前2个页面
            window.history.go(-2)
            // 刷新页面
            window.history.go()
       }
    </script>
</body>

8.浏览器回到顶部(或者别的位置):

window.scrollTo({left:0,top:0,behavior:"smooth"})

<!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>
        body{
            position: relative;
            height: 3000px;
            width: 3000px;
        }
        button{
            position: fixed;
            bottom: 20px;
            right: 20px;
            width: 100px; 
            height: 100px;
            line-height: 100px;
            background-color: aquamarine;
            font-size: 24px;
        }
    </style>
</head>
<body>
    <button id="top">回到顶部</button>

    <script>
        /* 
            让浏览器滚动到某一个位置。
            可以模拟一键回到顶部的效果
            语法:
                window.scrollTo(参数)
                参数写法一:
                    window.scrollTo(x,y)
                    你写的第一个数字就代表横向的位置
                    你写的第二个数字就代表纵向的位置
                    注意:2个数字,横向位置和纵向位置都必须写,并且没有平滑的滑动效果
                参数写法二:
                    window.scrollTo({left:XXX,top:XXX,behavior:'smooth'})
                        动横向就写left
                        动纵向就写top
                        2个都想操作left和top都写
                        并且可以添加平滑滑动的效果’
                        behavior:'smooth':平滑效果
        */

        // var btn = document.getElementById('btn')
        // btn.onclick = function(){
        //     window.scrollTo(0,0)
        // }
        var top = document.getElementById('top')
        top.onclick = function(){
            window.scrollTo({left:0,top:0,behavior:"smooth"})
        }

    </script>
</body>
</html>

 点击前:

点击后:

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

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

相关文章

认识一下容器网络接口 CNI

写在最前&#xff0c;周末写到这篇的时候我就发现可能是给自己挖了很大的坑&#xff0c;整个 Kubernetes 网关相关的内容会非常复杂且庞大。 深入探索 Kubernetes 网络模型和网络通信认识一下容器网络接口 CNI&#xff08;本篇&#xff09;源码分析&#xff1a;从 kubelet、容…

Ubuntu StartUML安装教程

1. 前言 开发工作中&#xff0c;要经常画流程图&#xff0c;时序图等&#xff0c;Ubuntu下推荐超级好用的工具StartUML,也用过Dia这款工具&#xff0c;对比使用之后还是觉得StartUML更香一点&#xff0c;本篇文章记录一下安装破解过程。 2. 安装 2.1 官网下载 地址&#xff1a…

SpringSecurity主要流程及扩展实现

解析主流的SpringSecurity安全框架&#xff0c;结合若依框架进行分析。 文章目录概述登录流程分析SecurityConfig配置类设置过滤请求添加过滤器注册认证provider/获取用户详情服务关键过滤器源码分析SpringSecurity实现若依token生成逻辑创建令牌设置用户代理信息刷新令牌有效期…

青春,不过几届世界杯系列1 —— 我经历的2002 ~ 2022年五届世界杯速览

1. 前言&#xff1a; 应 SoftwareTeacher, 邹欣老师在CSDN上的关于世界杯的邀约&#xff0c;在此回顾我目前经历的五届世界杯的点点滴滴。 2. 正文&#xff1a; 我是从2002年韩日世界杯&#xff0c;开始看世界杯的。现在算来&#xff0c;我已经经历了5届世界杯&#xff0c;而…

智慧水务平台建设方案全流程管控方案 智慧水务信息化系统的意义_管理_数据_设备

平升电子智慧水务平台建设方案全流程管控方案/智慧水务信息化系统/水务综合运营管理平台/智慧水务平台&#xff0c;综合水务公司对管网地理信息在线、供水调度SCADA、各环节数据互联互通、工单执行过程监督、运营情况分析等管理需求&#xff0c;建立了一套面向基层执行者、中层…

java计算机毕业设计ssm校园舆情监控系统tgv13(附源码、数据库)

java计算机毕业设计ssm校园舆情监控系统tgv13&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

说反话

目录 1009:说反话 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 代码长度限制: 时间限制 内存限制 思路: 1.数组 1.2代码: 2.拷贝单词 2.2代码: 总代码: 时间复杂度: 总结: 题目链接: 1009:说反话 给定一句英语&#x…

RocketMq使用(5.0)

RocketMq使用&#xff08;5.0&#xff09; 基础概念 这一部分我们可以结合一下管理控制台&#xff0c;先来理解下RocketMQ的一些重要的基础概念&#xff1a; 官方文档-消息发送领域模型&#xff1a;https://rocketmq.apache.org/zh/docs/domainModel/01main 整个消息流程&am…

【强化学习论文合集】十四.2018神经信息处理系统大会论文(NIPS2018)

强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。 本专栏整理了近几年国际顶级会议中,涉及强化学习(Rein…

倍福:通过FB_EcCoeSdoWrite功能块写入第三方伺服的COE参数

本文介绍通过PLC写入第三方伺服的COE参数。例如力矩等信息 功能块介绍 首先需要用到的功能块为FB_EcCoeSdoWrite,该参数是写入COE online中的数据。 PLC程序编写 首先扫描程序配置,并链接好NC变量如下所示 然后再COEOnline中确定需要写入的变量的地址如下所示: 确定所在…

Hello erupt-cloud-node

前言 cloud-node我们可以用来封装某些场景下使用的功能集。不启动不用&#xff0c;启动了就用&#xff0c;方便得很。后台管理突然就变成了搭积木。 搭建项目 这个项目的基础设施我们都使用和主项目相同的。所以&#xff0c;我们这里就先搭建项目来看一下。先说目录结构&…

网络属性设置函数 setsockopt (设置绑定地址快速重用)

setsockopt 函数可以设置应用层、传输层、网络层的一些属性&#xff0c;比如 应用层&#xff1a;绑定地址快速重用、允许广播、传输层&#xff1a;设置TCP最大数据段大小网络层&#xff1a;设置IP首部选项、服务类型、生存时间目录 1、setsockopt 参数和返回值解析 2、使用s…

重点| 系统集成项目管理工程师考前50个知识点(3)

本文章总结了系统集成项目管理工程师考试背记50个知识点&#xff01;&#xff01;&#xff01; 帮助大家更好的复习&#xff0c;希望能对大家有所帮助 比较长&#xff0c;放了部分&#xff0c;需要可私信&#xff01;&#xff01; 19、项目管理计划的主要内容&#xff1a; &…

RNN--学习笔记

RNN引入“记忆”的概念&#xff0c;即输出需要依赖于之前的输入序列&#xff0c;并把关键输入记住。循环2字来源于其每个元素都执行相同的任务&#xff1b;并⾮刚性地记忆所有固定⻓度的序列&#xff0c;而是通过隐藏状态来存储之前时间步的信息。不同类型的RNN&#xff1a;One…

SpringBoot的自动配置原理

目录 一、关于SpringBoot的启动原理 二、源码分析 SpringBootConfiguration ComponentScan EnableAutoConfiguration Import(AutoConfigurationImportSelector.class) AutoConfigurationPackage 三、总结 一、引言 要理解SpringBoot自动配置原理&#xff0c;首先要从S…

java计算机毕业设计ssm校园二手平台交易系统11w7i(附源码、数据库)

java计算机毕业设计ssm校园二手平台交易系统11w7i&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

【计算机视觉】Deep SORT多目标跟踪算法讲解(图文解释 超详细)

觉得有帮助请点赞关注收藏~~~ 一、目标跟踪简介 目标跟踪算法可以进行轨迹特征的分析和提取&#xff0c;以弥补目标检测的不足&#xff1b;有效地去除误检&#xff0c;提高检测精度&#xff0c;为进一步的行为分析提供基础。例如&#xff0c;在自动驾驶系统中&#xff0c;目标跟…

4 - 线程池 Java内置的线程池 - ScheduledExecutorService

ScheduledExecutorService ScheduledExecutorService是ExecutorService的子接口&#xff0c;具备了延迟运行或定期执行任务的能力。 1、常用获取方式 &#xff08;注&#xff1a;还是通过 Executors. 的方式进行调用&#xff09; 1&#xff09;static ScheduledExecutorSer…

5702开发板用户手册

一、 底板简介 1.1 产品简介 在这里&#xff0c;对这款 MP5702 开发板底板进行简单的功能介绍。本公司相关核心板都可与其对接&#xff0c;型号如 MP5652&#xff08;请详见用户手册&#xff09;。底板核心板的模式来设计组成完整的开发。底板和核心板之间使用高速板间连接器连…

EMCC 中 运用SQL 优化的建议

1. 性能中心 关于SQL的执行信息 2. 优化SQL&#xff1a; ------整个过程SQL 实现---------------------- DECLARE my_task_name VARCHAR2(30); my_sqltext CLOB; BEGIN my_sqltext : SELECT * || FROM sales || WHERE prod_id 10 AND || cust_id …