JS BOM了解

这篇具有很好参考价值的文章主要介绍了JS BOM了解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

BOM(Browser Object Model)浏览器对象模型,就是操作浏览器的一些能力,可以操作的内容如下:

  • 获取一些浏览器相关信息(窗口大小)
  • 操作浏览器的滚动条
  • 浏览器的信息(浏览器的版本)
  • 让浏览器出现一个弹窗(alert,confirm,prompt)

BOM的核心就是window对象,window是浏览器的一个对象,里面包含着操作浏览器的方法。

1 History浏览器记录

window 中有一个对象叫做history,是专门用来存储历史记录信息的,在编写时可不使用 window 这个前缀。

1.1 history.go

  • history.go(n): n为正数时向前n页,n为负数时向后退n页
    window.history.go(-2); 	// 返回上上页
    window.history.go(-1); 	// 返回上一页
    window.history.go(0); 	// 刷新当前页
    window.history.go(1); 	// 前往下一页
    

1.2 history.back()

  • history.back是用来回退历史记录的,就是回到前一个页面,相当于浏览器上的返回按钮,前提是要有上一条记录,不然就是一直在当前页面,也不会回退。
    window.history.back();
    

1.3 history.forword()

  • history.forword是到一个历史记录里面,也就是下一个页面,前提是之前有过回退操作,不然当前就是最后一个页面,没有下一个。
    window.history.forward();
    

2 Location浏览器地址

2.1 操作属性

注意:pathname、search属性在HashRouter路由模式下会失效,只能在BrowserRouter路由模式下使用。
假定当前浏览器加载的URL是:http://test.csdn.com:3000/#/build_table?id=1
常用属性如下表所示:

属性 说明
location.protocol http: 页面使用的协议,通常是http或https
location.hostname test.csdn.com 服务器域名
location.port 3000 请求的端口号
location.host test.csdn.com:3000 服务器名及端口号
location.origin http://text.csdn.com:3000 url源地址,只读
location.href 完整的URL地址 等价于window.location
location.pathname /(这里指端口号3000后面的/) URL中的路径和文件名,不会返回hash和search后面的内容,只有当打开的页面是一个文件时才会生效

以下是几个特殊属性:

  • location.hash:URL散列值(#号之后的部分,包括#号);

  • location.search:URL的查询字符串(?号后面的部分,包括?,指的是端口后面紧接着的?号,而不是#号后面的?号)

    - url为:http://test.csdn.com:3000/#/build_table?id=1
    console.log(location.hash)		// "#/build_table?id=1"
    console.log(location.search )	// ""
    
    - url为:http://test.csdn.com:3000/?id=1#/build_table
    console.log(location.hash)		// "#/build_table"
    console.log(location.search)	// "?id=1#/build_table"
    
  • 设置属性,URL为:http://test.csdn.com:3000/#/build_table?id=1

    location.hash = '#/cerate_table?id=2'
    console.log(location.href)	// http://test.csdn.com:3000/#/cerate_table?id=2
    
    location.search= '?/id=2'
    console.log(location.href)	// http://test.csdn.com:3000/#/?id=2
    
  • 其他属性示例:http://foouser:barpassword@www.wrox.com:80/HB/new_file2.html

    属性 说明
    location.username foouser 域名前指定的用户名
    location.password barpassword 域名前指定的密码

2.2 操作方法

  • 跳转:location.assign()
    // 指定协议跳转
    location.assign("http://www.baidu.com")
    /* 等同于 */ 
    location.href = "http://www.baidu.com"
    
    // 以当前页面协议跳转
    location.assign("//www.baidu.com")
    /* 等同于 */ 
    location.href = "//www.baidu.com"
    
  • 刷新:location.reload()
    // 重新加载,可能是从缓存加载
    location.reload();
    // 重新加载,从服务器加载
    location.reload(true)
    

3 window界面属性

  • 窗口:指的是浏览器窗口
  • 视口:指的是浏览器窗口中的页面视口(不包含浏览器边框和工具栏)
  • 屏幕:指的是电脑屏幕

3.1 窗口和屏幕的位置

  • screenLeft:表示窗口相对于屏幕左侧的位置,返回值的单位是像素值
  • screenTop:表示窗口相对于屏幕顶部的位置,返回值的单位是像素值
    console.log("screenLeft 位置:", window.screenLeft);
    console.log("screenTop 位置:", window.screenTop);
    
  • moveTo:接收要移动到的新位置的绝对坐标x和y;
  • moveBy:接收相对当前位置在两个方向上移动的像素值
    // 把窗口移动到左上角
    window.moveTo(0,0)
    
    // 把窗口移动到坐标位置(200,300)
    window.moveTo(200,300)
    
    // 把窗口向下移动100像素
    window.moveBy(0,100)
    
    // 把窗口向左移动10像素
    window.moveBy(-10,0)
    

3.2 窗口和视口的大小

  • 视口:innerHeight和innerWidth,返回浏览器窗口中页面视口大小(不包含浏览器边框和工具栏)
    console.log("innerWidth 宽度:",window.innerWidth);
    // innerWidth 宽度: 1002
    console.log("innerHeight 高度:",window.innerHeight);
    // innerHeight 高度: 907
    
  • 窗口:outerHeight和outerWidth,返回浏览器自身窗口的大小
    console.log("outerWidth 宽度:",window.outerWidth);
    // outerWidth 宽度: 1680
    console.log("outerHeight 高度:",window.outerHeight);
    // outerHeight 高度: 1010
    
  • 浏览器的onscroll事件
    浏览器滚动其实其本身没有动,只不过是页面向上平移了,所以滚动应该使用document对象,onscroll事件是当浏览器滚动条滚动时触发或者鼠标滚轮滚动时触发,前提是页面的高度超过浏览器的可视窗口。
    window.onscroll = function(){
    	console.log('浏览器滚动了');
    }
    

3.3 视口与滚动的关系

Safari浏览器使用的是window.pageXOffset和window.pageYOffset

  • 距离,scrollX:文档向右滚动的距离,当窗口无法展示整个页面,这时候需要滚动查看;
  • 距离,scrollY:文档向下滚动的距离,当窗口无法展示整个页面,这时候需要滚动查看;
    console.log("scrollX 向右滚动了多少距离:",window.scrollX);
    // scrollX 向右滚动了多少距离: 0
    console.log("scrollY 向下滚动了多少距离:",window.scrollY);
    // scrollY 向下滚动了多少距离: 0
    
  • 定位,scrollTo(绝对)和scrollBy(相对),这两个方法接收x和y坐标,表示要滚动到的位置
    // 滚动到页面左上角
    window.scrollTo(0,0)
    
    // 滚动到页面左边100像素和顶部200像素的位置
    window.scrollTo(100,200)
    
    // 相对于当前视口向下滚动100像素
    window.scrollBy(0,100)
    
    // 相对于当前视口向右滚动40像素
    window.scrollBy(40,0)
    

4 其他不常用属性

4.1 Screen客户端屏幕

属性 描述
screen.height 获取整个屏幕的高
screen.width 获取整个屏幕的宽
screen.availHeight 整个屏幕的高减去系统部件的高,可用屏幕的高
screen.availWidth 整个屏幕的宽减去系统部件的宽,可用屏幕的宽

4.2 Navigator浏览器信息

属性 描述
navigator.userAgent 获取浏览器的整体信息
navigator.appName 获取浏览器名称
navigator.appVersion 获取浏览器的版本号
navigator.platform 获取当前计算机操作系统

转载至文章来源地址https://www.toymoban.com/news/detail-564680.html

到了这里,关于JS BOM了解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity3D插件】Embedded Browser嵌入式浏览器插件使用教程

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 好久没有介绍插件了,今天分享一款比较好用的嵌入式浏览器插件。 可以在Unity的UGUI上渲染一个网页

    2024年02月11日
    浏览(26)
  • JS BOM了解

    BOM(Browser Object Model)浏览器对象模型,就是操作浏览器的一些能力,可以操作的内容如下: 获取一些浏览器相关信息(窗口大小) 操作浏览器的滚动条 浏览器的信息(浏览器的版本) 让浏览器出现一个弹窗(alert,confirm,prompt) BOM的核心就是window对象,window是浏览器的一个

    2024年02月16日
    浏览(28)
  • Burp Suite 自带浏览器Burp‘s Browser(Chromium)沙盒sandbox问题的解决

    Burp Suite启动自带浏览器Burp’s Browser(Chromium)的时候,弹出does not support running without sandbox出错框。 解决方法,操作如下: Project options --Misc– Burp’s Browser -- Allow Burp’s browser to run without sandbox,勾选这个选项。

    2024年02月13日
    浏览(33)
  • unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接

    这是个在项目中使用了很久的浏览器插件。 很负责任的说这是在pc平台上最好用的浏览器插件 商业付费价格78刀,相比3d webview等插件动不动就178、368的价格就显得很良心 最新版下载链接(请勿商用) 1.1 功能概述 基本和普通浏览器无异 支持调试台Devtools功能 支持evil js 支持

    2024年02月05日
    浏览(48)
  • 前端---需要了解浏览器相关知识--浏览器请求服务器资源---缓存

    掘金1:浏览器缓存 掘金2 :浏览器缓存 跟别人怎么讲,从大的说:缓存的原理是什么? 再说什么是浏览器缓存? 浏览器缓存 请求(静态资源 | 动态资源) 一、缓存是什么? 二、为什么? 浏览器是如何判断是否使用缓存的??第一次请求网页 第二次请求相同网页: 三、怎

    2024年02月12日
    浏览(40)
  • 真的只是简单了解下浏览器缓存

    当我们打开一个页面时,会向服务端发起很多次请求,如下图打开百毒首页,发起了HTML、各种图片、JS、CSS等资源共72次请求。这里面很多资源并不会频繁变化,每次打开页面都重新请求下载,就很浪费了。 浏览器缓存也称为HTTP缓存,HTTP缓存 简单理解就是本地(浏览器)缓

    2023年04月25日
    浏览(27)
  • 一文快速了解浏览器Sui Explorer

    Sui作为一条基于第一原理重新设计和构建而成的L1公链,所有区块和交易信息皆公开透明,每个人都能自行查看。通过Sui链上浏览器,用户可以迅速了解链上的交易情况,比如当前的TPS和Gas价格,也可以使用Digest来查看特定交易的内容。您可以使用Sui Explorer实现以下目的: 查

    2024年02月06日
    浏览(33)
  • 探究Fingerprintjs:了解浏览器指纹技术的原理和应用

    Fingerprintjs是一种浏览器指纹技术,它可以通过收集用户浏览器的一些特征信息,如浏览器类型、操作系统、屏幕分辨率等,来生成一个唯一的浏览器标识。这种技术被广泛应用于网络安全、广告营销、反欺诈等领域。 浏览器指纹技术起源于2009年,当时,随着互联网的发展,

    2024年02月10日
    浏览(34)
  • 第138篇:了解HTTP协议(TCP/IP协议,DNS域名解析,浏览器缓存)

    好家伙,发现自己的网络知识十分匮乏,赶紧补一下   这里先举个我生活中的例子 欸,作业不会写了,上网搜一下 用edge浏览器上bing必应搜一下(百度广告太多了,真不想用百度举例子)   假设这是我们第一次访问bing的首页 当我向浏览器中输入https://cn.bing.com/并按下回车

    2023年04月24日
    浏览(32)
  • 从浏览器输入url到页面加载(六)前端必须了解的路由器和光纤小知识

    前言 上一章我们说到了 数据包 在网线中的故事,说到了 双绞线 ,还说到了 麻花 。这一章继续沿着这条线路往下走,说一些和cdn以及路由器相关,运营商以及光纤相关的小知识,前端同学应该了解一下的   目录 前言 1.  CDN和路由器有关系吗? 2. 你的电脑能直接上网吗?

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包