首页 > 编程语言 >BOM 编程

BOM 编程

时间:2023-08-08 21:45:08浏览次数:52  
标签:历史记录 浏览器 编程 获取 BOM 当前 页面 location

BOM 编程

介绍

  • BOM(浏览器对象模型):
    • 可以通过 js 操作浏览器
  • 分类
    • window 代表浏览器的窗口,也是浏览器的全局对象
    • document 代表当前加载的 html 文档
    • navigator 浏览器的信息,可以获取浏览器的版本
    • location 浏览器的地址栏信息,可以获取地址信息,或操作浏览器跳转页面
    • history 浏览器的历史记录,可以操作浏览器的前进后退(不能取到具体记录),且只能在当次访问有效
    • screen 用户的屏幕信息,可以获取用户显示器相关信息`
  • BOM 对象都是 window 对象的属性,可以通过 window 对象使用,也可直接
  • 代表当前浏览器信息,该属性可以用来识别浏览器
  • navigator 对象的大部分属性已经无效,一般使用其userAgent属性来判断浏览器信息
  • IE11已经将微软和 IE 相关标识去除,不能通过userAgent属性来判断。ActiveXObject 是 IE 独有方法,但是 IE11会将该方法的布尔值转换为 false。需要使用"ActiveXObject" in window 来判断

userAgent:

edge:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188
Chrome:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36

//使用正则表达式判断浏览器  
        let ua = navigator.userAgent;  
        console.log(ua);  
        // 判断浏览器  
        if(/firefox/i.test(ua)){  
            alert('firefox');  
        }else if(/chrome[edg]/i.test(ua)){  
            alert('chrome');  
        }else if(/edg/i.test(ua)){  
            alert('edge');  
        }else if("ActiveXObject" in window){  
            alert('ie');  
        }else{  
            alert('unknown');  
        }  

history

  • History对象可以用来
    1. 获取历史记录
    2. 操作历史记录
    3. 监听历史记录的变化
    4. 监听历史记录的变化
  • length 属性: 获取到当前窗口中的历史记录的数量
  • back() 方法:
    1. 返回上一页
    2. 如果没有上一页,返回首页
    3. 如果没有首页,返回 null
  • forward() 方法:
    1. 返回下一页
    2. 如果没有下一页,返回首页
    3. 如果没有首页,返回 null
  • go() 方法:
    1. 参数为正数,表示向前跳转的页面数
    2. 参数为负数,表示向后跳转的页面数

location

  • location:
    • 如果是直接在地址栏输入的,那么 location 就是当前的地址栏信息;
    • 如果直接将属性修改为完整路径,则页面会调整到该路径,且会生成相应的历史记录

属性

  • 获取当前的 url
    • location.href
  • 获取当前的协议
    • location.protocol
  • 获取当前的域名
    • location.host
  • 获取当前的端口
    • location.port
    • location.hash
  • 获取当前的查询参数
    • location.search
  • 获取当前的完整 url
    • location.toString()
  • 获取当前的 hostname
    • location.hostname
  • 获取当前的 origin
    • location.origin
  • 获取当前的 ancestorOrigins
    • location.ancestorOrigins
  • 获取当前的 href
    • location.href

方法

  • 重新加载当前页面,作用与点击刷新按钮一样。传 true 可以强制清空缓存刷新页面
    • location.reload(true)
  • 跳转到其他页面,作用和直接修改 url 一样
    • location.assign()
  • 可以使用新页面替换当前页面,不会产生历史记录
    • location.replace()

标签:历史记录,浏览器,编程,获取,BOM,当前,页面,location
From: https://www.cnblogs.com/flblogs/p/17615464.html

相关文章

  • 《Java编程思想第四版》学习笔记07
    到底应该使用一个接口还是一个抽象类呢?若使用接口,我们可以同时获得抽象类以及接口的好处。所以假如想创建的基础类没有任何方法定义或者成员变量,那么无论如何都愿意使用接口,而不要选择抽象类。事实上,如果事先知道某种东西会成为基础类,那么第一个选择就是把它变成一个接口。只有在必......
  • CodeSys PLC编程指南(ST语言)@Like
    CodeSysPLC编程指南(ST语言)@Like 目录1.软件编程1.1.PLC编程基本概念1.1.1.字符集1.1.2.分界符1.1.3.关键字1.1.4.常数1.1.5.操作数1.1.6.变量1.1.7.数据类型1.1.8.匈牙利命名法1.1.9.变量的类型1.2.ST语言简介1.2.1.执行顺序1.2.2.语句1.3.CODE......
  • 掌握.NET多线程编程技术
    当涉及到处理并发任务、提高程序性能以及充分利用多核处理器时,.NET多线程编程技术就变得至关重要。在本篇博客中,我将为您介绍一些.NET多线程编程的基本概念和技术,并附上一些示例代码来帮助您更好地理解。为什么使用多线程编程?多线程编程允许在同一进程中同时执行多个线程,从而充分利......
  • STC15 外部中断编程笔记
    以STC15W4K58S4为例,可以将片上的外部中断资源分为“高级”和“低级”两类,EXINT0和EXINT1属于高级的,EXINT2~EXINT4属于低级的。“高级”的外部中断可以配置中断优先级,选择中断源;低级的则不行。EXINT0和EXINT1的配置这两个外部中断的配置寄存器都可位寻址,因此可以直......
  • BOM可视化工具 InteractiveHtmlBom 推荐
    最近最忙一个项目:制作一个音乐播放器,巴掌大的PCB上有130个元件,焊接时光靠 BOM 表效率有些低,然后发现了一个BOM可视化工具  InteractiveHtmlBom ,焊接放置元件时效率高了很多。其支持 KiCAD、立创EDA、AD 等多种PCBEDA工具。 对于AD, 立创EDA如何安装和使用,请参考文......
  • java多线程编程基础4--正确使用 Volatile 变量
    记住一点就是:对数据的操作是分三步:1.从内存从拿过来2.更改数据3.写入内存 还需要记住一点就是:我们在存储数据的时候,不一定是将数据存放在内存中的,有时放在寄存器中的。所以多线程操作的时候,共有变量A如果被一个线程操作,并且存放在寄存器中并没写入到内存中,而另一个线程操作这个......
  • 4.深度学习(1) --神经网络编程入门
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • Go的任务调度单元与并发编程
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言本文主要介绍Go语言、进程、线程、协程的出现背景原因以及Go语言如何解决协程的问题和并发编程的实现,本文的阅读时长约在15-20分钟......
  • 并发编程 - 模式与应用
    限制1、限制对CPU的使用单核CPU下,while(true)里如果什么都不干,CPU会空转占用会很快达到100%。这时while(true)里哪怕用sleep(1)也会大幅降低cpu占用sleep实现while(true){try{Thread.sleep(50);}catch(InterruptedExceptione){e.prin......
  • 《Java编程思想第四版》学习笔记06
    为什么要把一个方法声明成final呢?正如上一章指出的那样,它能防止其他人覆盖那个方法。但也许更重要的一点是,它可有效地“关闭”动态绑定,或者告诉编译器不需要进行动态绑定。这样一来,编译器就可为final方法调用生成效率更高的代码。               ......