当前位置: 首页 > news >正文

JavaScript Windows 浏览器对象模型

Window 对象

  • BOM 的核心就是 window 对象
  • 所有浏览器都支持 window 对象。它表示浏览器窗口。
  • 所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
  • 全局变量是 window 对象的属性。
  • 全局函数是 window 对象的方法。
  • HTML DOM 的 document 也是 window 对象的属性之一

定义全局变量与在 window 对象上直接定义属性差别。

1、全局变量不能通过 delete 操作符删除;而 window 属性上定义的变量可以通过 delete 删除

var num=123;
window.str="string";
delete num;
delete str;
console.log(num); //123
console.log(str); //str is not defined
//全局变量不能通过 delete 删除,因为通过 var 定义全局变量会有一个名为 [Configurable] 的属性,
//默认值为 false,所以这样定义的属性不可以通过 delete 操作符删除

2、访问未声明的变量会抛出错误,但是通过查询 window 对象,可以知道某个可能未声明的变量是否存在。

var newValue=oldValue; // 报错:oldValue is not defined
var newValue=window.oldValue; // 不会报错
console.log(newValue); // undefined

3、有些自执行函数里面的变量,想要外部也访问到的话,在 window 对象上直接定义属性。

方法

  • window.open() - 打开新窗口
  • window.close() - 关闭当前窗口
  • window.moveTo() - 移动当前窗口
  • window.resizeTo() - 调整当前窗口的尺寸

Window 尺寸

有三种方法能够确定浏览器窗口的尺寸。
对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:

  • window.innerHeight - 浏览器窗口的内部高度(包括滚动条)
  • window.innerWidth - 浏览器窗口的内部宽度(包括滚动条)

对于 Internet Explorer 8、7、6、5:

  • document.documentElement.clientHeight
  • document.documentElement.clientWidth

或者

  • document.body.clientHeight
  • document.body.clientWidth
var w=window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;var h=window.innerHeight
|| document.documentElement.clientHeight
|| document.body.clientHeight;

属性

screen

包含有关用户屏幕的信息
window.screen对象在编写时可以不使用 window 这个前缀。

  • screen.availWidth - 可用的屏幕宽度
    • 返回访问者屏幕的宽度,以像素计,减去界面特性,比如窗口任务栏。
    • document.write("可用宽度: " + screen.availWidth);
  • screen.availHeight - 可用的屏幕高度
    • 返回访问者屏幕的高度,以像素计,减去界面特性,比如窗口任务栏。
    • document.write("可用高度: " + screen.availHeight);
  • 总宽度
    • document.write(screen.width + "*" + screen.height);
  • 色彩深度
    • document.write(screen.colorDepth);
  • 色彩分辨率
    • document.write(screen.pixelDepth);

location

用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。
window.location 对象在编写时可不使用 window 这个前缀。 一些例子:

  • location.hostname 返回 web 主机的域名
  • location.pathname 返回当前页面的路径和文件名
  • location.port 返回 web 主机的端口 (80 或 443)
  • location.protocol 返回所使用的 web 协议(http: 或 https:)
  • location.href 属性返回当前页面的 URL。document.write(location.href);
  • location.pathname 属性返回 URL 的路径名。document.write(location.pathname);
  • location.assign(url) 加载 URL 指定的新的 HTML 文档。 就相当于一个链接,跳转到指定的url,当前页面会转为新页面内容,可以点击后退返回上一个页面。
  • location.replace(url) 通过加载 URL 指定的文档来替换当前文档 ,这个方法是替换当前窗口页面,前后两个页面共用一个窗口,所以是没有后退返回上一页的

history

包含浏览器历史
window.history对象在编写时可不使用 window 这个前缀。
为了保护用户隐私,对 JavaScript 访问该对象的方法做出了限制。

  • history.back()加载历史列表中的前一个 URL,和在浏览器中点击后退按钮是相同的
  • history.forward() 加载历史列表中的下一个 URL,和在浏览器中点击前进按钮是相同的

navigator

包含有关访问者浏览器的信息。
在编写时可不使用 window 这个前缀。

<script>
txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>";
txt+= "<p>浏览器名称: " + navigator.appName + "</p>";
txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>";
txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>";
txt+= "<p>硬件平台: " + navigator.platform + "</p>";
txt+= "<p>用户代理: " + navigator.userAgent + "</p>";
txt+= "<p>用户代理语言: " + navigator.language + "</p>";
document.getElementById("example").innerHTML=txt;
</script>

警告!!!

来自 navigator 对象的信息具有误导性,不应该被用于检测浏览器版本,这是因为:

  • navigator 数据可被浏览器使用者更改
  • 一些浏览器对测试站点会识别错误
  • 浏览器无法报告晚于浏览器发布的新操作系统

浏览器检测

由于 navigator 可误导浏览器检测,使用对象检测可用来嗅探不同的浏览器。
由于不同的浏览器支持不同的对象,您可以使用对象来检测浏览器。例如,由于只有 Opera 支持属性 “window.opera”,您可以据此识别出 Opera。
例子:if (window.opera) {…some action…}

相关文章:

JavaScript Windows 浏览器对象模型

Window 对象 BOM 的核心就是 window 对象所有浏览器都支持 window 对象。它表示浏览器窗口。所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。全局变量是 window 对象的属性。全局函数是 window 对象的方法。HTML DOM 的 document 也是 window 对象的属…...

【uniapp 获取缓存及清除缓存】

小程序及H5 获取缓存&#xff1a; 使用uniapp中的wx.getStorageInfoSync()方法可以获取当前小程序或H5应用的本地缓存信息&#xff0c;如下所示&#xff1a; let storageInfo uni.getStorageInfoSync() console.log(storageInfo)其中&#xff0c;storageInfo是一个对象&…...

【vim 学习系列文章 2 - vim 常用插件配置】

文章目录 1.1 vim 常用插件1.1.1 vim 插件 Pathogen 管理1.1.2 vim 常用插件推荐1.1.3 vim Leaderf1.1.4 vim ripgrep 工具1.1.5 vim Leaderf 配合 rg1.1.6 vim autocmd 配置 1.2 其它类型文件 vimrc 配置1.2.1 System Verilog vimrc 配置 上篇文章&#xff1a;vim 学习系列文章…...

【外卖系统】修改菜品

需求分析 在菜品管理列表页面点击修改按钮&#xff0c;跳转到修改页面&#xff0c;在修改页面回显菜品相关信息并进行修改&#xff0c;在最后点击确定按钮完成修改操作 代码设计 页面发送ajax请求&#xff0c;请求服务端获取分类数据&#xff0c;用于菜品分类下拉框中数据显…...

【暑期每日一练】 day11

目录 选择题 &#xff08;1&#xff09; 解析&#xff1a; &#xff08;2&#xff09; 解析&#xff1a; &#xff08;3&#xff09; 解析&#xff1a; &#xff08;4&#xff09; 解析&#xff1a; &#xff08;5&#xff09; 解析&#xff1a; 编程题 题一 描…...

神经概率语言模型

本文主要参考《A Neural Probabilistic Language Model》这是一篇很重要的语言模型论文,发表于2003年。主要贡献如下: 提出了一种基于神经网络的语言模型&#xff0c;是较早将神经网络应用于语言模型领域的工作之一&#xff0c;具有里程碑意义。采用神经网络模型预测下一个单词…...

什么是shadow DOM?

Shadow DOM&#xff08;影子DOM&#xff09;是一种用于在Web组件中封装HTML、CSS和JavaScript的技术。它是Web组件的一个重要特性&#xff0c;旨在将组件的结构、样式和行为封装在一个独立的、隔离的DOM树中&#xff0c;从而与主文档的DOM树相互隔离。 传统的Web开发中&#x…...

我的 365 天创作纪念日

✅作者简介&#xff1a;人工智能专业本科在读&#xff0c;喜欢计算机与编程&#xff0c;写博客记录自己的学习历程。 &#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&…...

spark-sql : “java.lang.NoSuchFieldError: out“ 异常解决

异常现象 at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:847)at org.apac…...

Node.js入门笔记(包含源代码)以及详细解析

Node.js 入门笔记源码 01、如何在终端中执行js 文件 目标&#xff1a;将下面的代码语句在中断中执行 代码演示&#xff1a; console.log(Hello World)for (let i 0;i < 3;i) {console.log(6)}方法&#xff1a;在文件上右击打开在终端中执行&#xff0c;然后输入node空格 输…...

windows自动化点击大麦app抢购、捡漏,仅支持windows11操作系统

文章目录 必要条件程序运行必要条件 确保windows11版本操作系统,如果不是可以通过镜像升级为windows11如果已经是windows11操作系统,确保更新到最新版本 修改系统所在时区,将国家或地区改为美国 开启虚拟化 勾选Hyper-V,如果没有则不需要勾选 勾选虚拟机平台 勾选完毕,点…...

vue 拦截 v-html 中 a 标签 href 跳转

记录 template 中 给需要 拦截的 代码片段加上click 方法 click“targetNodeNameClick” <p class"message-content message-content-text" v-html"replaceURLWithHTMLLinks(getText(message))" click"targetNodeNameClick"></p>然…...

分布式id、系统id、业务id以及主键之间的关系

推荐 连分布式ID都理解不了&#xff0c;你是刚培训出来冒充面试官的吧 1 分布式id、系统id、业务id以及主键之间的关系 分布式ID、系统ID、业务ID和主键的关系&#xff1a; 分布式ID&#xff1a;在分布式系统中&#xff0c;由于存在多个独立的节点&#xff0c;为了保证每个节…...

设计模式七:适配器模式(Adapter Pattern)

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容的接口能够协同工作。 适配器模式涉及角色&#xff1a; 目标接口&#xff08;Target Interface&#xff09;&#xff1a…...

数据结构---队列

(一)队列之基础补充 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 —— 百科 「队列 Queue」是一种…...

chatGPT在软件测试中应用方式有哪些?

ChatGPT可以在软件测试中以以下方式应用&#xff1a; 1. 自动化对话测试&#xff1a;ChatGPT可以用于自动化对话测试&#xff0c;模拟用户与软件系统进行实时对话。它可以扮演用户的角色&#xff0c;向系统发送各种类型的指令和请求&#xff0c;并验证系统的响应是否符合预期。…...

chatgpt 接口使用(一)

使用api实现功能 参考链接&#xff1a;https://platform.openai.com/examples 安装库&#xff1a; pip3 install openai 例如&#xff1a; import os import openaiopenai.api_key os.getenv("OPENAI_API_KEY") response openai.ChatCompletion.create(model&q…...

【个人笔记】Linux 服务管理两种方式service和systemctl

service命令与systemctl 命令 service 命令与传统的 SysVinit 和 Upstart 初始化系统相关。较早期的 Linux 发行版&#xff08;如早期的 Ubuntu、Red Hat 等&#xff09;使用了这些初始化系统。service 命令用于启动、停止、重启和查询系统服务的状态。虽然许多现代 Linux 发行…...

HCIP中期考试实验

考试需求 1、该拓扑为公司网络&#xff0c;其中包括公司总部、公司分部以及公司骨干网&#xff0c;不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名&#xff0c;并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中&#xff0c;运行OSPF协议或者BGP…...

【WebRTC---源码篇】(二十二)WebRTC的混音处理

音频混音主力 音频混音主体主要通过(重采样) + (混音)为主 音频重采样 内容实现是在webrtc::voe中实现的,下面来对重采样全流程逐一分析 。 void RemixAndResample(const AudioFrame& src_frame,//源音频数据帧PushResampler<int16_t>* resampler,//重采样对…...

VibeVoice语音合成效果展示:印度英语in-Samuel_man技术讲座样例

VibeVoice语音合成效果展示&#xff1a;印度英语in-Samuel_man技术讲座样例 1. 真实语音合成效果体验 今天我要带大家体验一个让人惊艳的语音合成技术——VibeVoice实时语音合成系统。这不是普通的文字转语音工具&#xff0c;而是一个能够生成极其自然、富有表现力的人工智能…...

Java突变测试终极指南:Pitest如何提升你的代码质量

Java突变测试终极指南&#xff1a;Pitest如何提升你的代码质量 【免费下载链接】pitest State of the art mutation testing system for the JVM 项目地址: https://gitcode.com/gh_mirrors/pi/pitest 突变测试是Java开发中革命性的质量保障技术&#xff0c;而Pitest&am…...

D3KeyHelper实战指南:从入门到精通的认知跃迁

D3KeyHelper实战指南&#xff1a;从入门到精通的认知跃迁 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3KeyHelper是一款专为《暗黑破坏神3》设计…...

戴森电池管理系统开源固件技术指南:从原理到实践的全面解析

戴森电池管理系统开源固件技术指南&#xff1a;从原理到实践的全面解析 【免费下载链接】FU-Dyson-BMS (Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System 项目地址: https://gitcode.com/gh_mirrors/fu/FU-Dyson-BMS 第一部分&#xff…...

罗技鼠标宏:专业级压枪系统构建指南

罗技鼠标宏&#xff1a;专业级压枪系统构建指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在竞技射击游戏中&#xff0c;精准控制武器后坐力…...

突破百度网盘限速:3招实现2MB/s极速下载的开源解决方案

突破百度网盘限速&#xff1a;3招实现2MB/s极速下载的开源解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否也曾经历过百度网盘下载速度仅有几十KB/s的煎熬&…...

s2-pro镜像管理:容器健康检查脚本编写与自动化服务恢复方案

s2-pro镜像管理&#xff1a;容器健康检查脚本编写与自动化服务恢复方案 1. 引言 s2-pro作为专业级语音合成模型镜像&#xff0c;在实际业务场景中承担着重要角色。当服务出现异常时&#xff0c;如何快速发现问题并自动恢复成为运维工作的关键。本文将详细介绍如何为s2-pro编写…...

LumiPixel Canvas Quest批量处理教程:使用Python脚本自动化生成人像图库

LumiPixel Canvas Quest批量处理教程&#xff1a;使用Python脚本自动化生成人像图库 1. 引言 最近遇到一个实际需求&#xff1a;需要为电商项目快速生成5000张不同风格的人像图片。手动一张张生成显然不现实&#xff0c;于是研究出了这套基于Python的自动化方案。用下来效果不…...

绝地求生罗技鼠标宏配置全攻略:从零到精通的压枪优化指南

绝地求生罗技鼠标宏配置全攻略&#xff1a;从零到精通的压枪优化指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的枪口…...

一天一个开源项目(第56篇):人人都能用英语 - AI 时代的外语学习开源项目

引言 “其实一个字就够了&#xff1a;用。” 这是「一天一个开源项目」系列的第 56 篇文章。今天介绍的项目是 人人都能用英语&#xff08;GitHub&#xff09;。 学英语的核心是什么&#xff1f;李笑来在 2010 年的著作里用一个字概括&#xff1a;用。如今&#xff0c;这个经典…...