首页 > 其他分享 >BOM和DOM介绍、Window对象、Window子对象

BOM和DOM介绍、Window对象、Window子对象

时间:2024-10-11 11:59:28浏览次数:9  
标签:console log DOM window Window let BOM 浏览器 location

【一】BOM和DOM介绍

【1】什么是DOM/BOM

  • 文档对象模型(Document Object Model, 简称 DOM)
  • 浏览器对象模型(Browser Object Model, 简称 BOM)
  • 是 JavaScript 与网页内容及浏览器环境进行交互的两种核心概念。

【2】DOM

(1)概述

  • 文档对象模型(DOM)是一个编程接口,它以树状结构来表示 HTML 或 XML 文档。
  • 在 DOM 中,每个HTML元素、属性、文本节点等都被视为一个对象,通过JavaScript可以创建、查询、修改和删除这些对象。

(2)示例

  • document.getElementById(id): 通过元素ID获取DOM元素对象。
  • element.querySelector/pseudo-class: 根据CSS选择器或伪类选择DOM元素对象。
  • element.appendChild(newElement): 向指定元素添加子元素。
  • element.setAttribute(name, value): 设置元素属性值。
  • element.innerText/innerHTML: 获取或设置元素内的文本内容或HTML内容。

【2】BOM

(1)概述

  • 浏览器对象模型(BOM)则是浏览器提供的API集合,主要用于处理与浏览器环境相关的任务,如窗口管理、导航、cookie、location等。

(2)示例

  • window.open(url[, name[, features]]): 打开新的浏览器窗口或tab访问指定URL。
  • window.location.href: 获取当前页面的URL地址,并可用于更改页面位置。
  • window.history.back(): 返回历史记录中的上一页。
  • navigator.userAgent: 获取浏览器的信息,例如类型、版本等。

【3】总结

  • DOM 和 BOM 是 JavaScript 开发中两个不可或缺的部分,分别负责对网页内容和浏览器环境进行深层次的操作,使得前端开发者能够实现丰富的交互功能和动态效果。

【二】Window对象

【1】open()

// 语法
window.open("url","target","features")
url:指定的网址
target:打开新标签页的方式 _blank  打开新窗口(默认) _self  原地打开
features:指定打开的窗口大小的参数 'height=400px,width=400px'

【2】close()

  • 关闭当前窗口。
window.close();

【3】setTimeout()

  • 在指定的时间延迟后执行一次指定的函数或者一段代码。
setTimeout(function(){
  // 执行代码
}, 100); // 1秒后执行

setTimeout(function () {
    console.log("等会见")
}, 100); //1秒后执行

【4】setInterval()

  • 以固定的时间间隔重复执行指定的函数或者一段代码。
setInterval(function(){
  // 执行代码
}, 200); // 每2秒执行一次

setInterval(function () {
    console.log("执行中...")
}, 200); // 每2秒执行一次

【5】alert()

  • 显示一个带有指定消息和一个确认按钮的警告框。
window.alert("Hello, World!");

【6】confirm()

  • 显示一个带有指定消息和两个按钮(确认和取消)的对话框。
if (window.confirm("Are you sure?")) {
  // 用户点击了确认按钮
} else {
  // 用户点击了取消按钮
}

if (window.confirm("Are you sure?")) {
    window.alert("yes")
} else {
    window.alert("no")
}

【7】prompt()

  • 显示一个带有指定消息和一个文本输入框的对话框。
let name = window.prompt("Please enter your name:");

【8】innerHeight属性

  • 返回浏览器窗口的内部高度(即视口的高度),以像素为单位,不包括浏览器的工具栏、滚动条等元素。
let windowHeight = window.innerHeight;
console.log(windowHeight); // 输出当前窗口的视口高度

【9】innerWidth属性

  • 返回浏览器窗口的内部宽度(即视口的宽度),以像素为单位,不包括浏览器的工具栏、滚动条等元素。
let windowWidth = window.innerWidth;
console.log(windowWidth); // 输出当前窗口的视口宽度

【10】监听 resize 事件

  • 两个属性返回的值会随着窗口的大小调整而改变
  • 如果需要监控窗口大小的改变,可以通过监听 resize 事件来实现
  • 在使用这两个属性时,可以根据返回的数值进行相应的布局或调整操作,以适应当前窗口的尺寸。
window.addEventListener("resize", function() {
  let windowHeight = window.innerHeight;
  let windowWidth = window.innerWidth;
  console.log("Window Height:", windowHeight);
  console.log("Window Width:", windowWidth);
});

【11】window.opener

  • 是指打开当前窗口的那个窗口对象。它是 Window 对象的一个属性,用于在当前窗口中引用到打开它的父窗口或者来源窗口。

  • 在以下情况下可以使用 window.opener

(1)场景一:window.open()

  • 当前窗口是通过使用 JavaScript 的 window.open() 方法打开的弹出窗口时,可以使用 window.opener 来引用打开它的父窗口。
let popup = window.open("popup.html"); // 打开一个弹出窗口
  • 然后,在弹出窗口 popup.html 中的 JavaScript 代码中,可以通过 window.opener 引用到父窗口:
let parentWindow = window.opener;
console.log(parentWindow); // 输出父窗口对象

(2)场景二:postMessage()方法

  • 当前窗口是通过其他窗口向其发送消息(使用 postMessage() 方法)时,可以使用 event.source 属性来获取消息来源窗口,并通过 window.opener 来引用该来源窗口。
  • 例如,在来源窗口的 JavaScript 代码中,向当前窗口发送消息:
let currentWindow = window.open("current.html"); // 打开当前窗口

// 向当前窗口发送消息
currentWindow.postMessage("Hello", "http://example.com");
  • 然后,在当前窗口 current.html 中的 JavaScript 代码中,通过监听 message 事件接收来自来源窗口的消息,并使用 event.source 和 window.opener 引用到来源窗口:
window.addEventListener("message", function(event) {
  let message = event.data;
  let sourceWindow = event.source;
  let openerWindow = window.opener;

  console.log("Message:", message);
  console.log("Source Window:", sourceWindow);
  console.log("Opener Window:", openerWindow);
});

(3)在来源窗口的js代码中,向当前窗口发送消息

window.postMessage("Hello!");

【三】Window子对象

window.location // 控制地址
window.history // 控制浏览器历史记录
window.navigator // 获取浏览器标识信息

【1】window.document

  • 此子对象表示当前窗口中的文档对象,用于对页面内容进行读取和修改操作。
  • 通过 window.document,可以使用各种方法来查询和修改当前页面的 HTML 结构、CSS 样式和 DOM 元素。
  • 例如,要获取页面标题:
let pageTitle = window.document.title;
console.log(pageTitle);

【2】window.location

  • 此子对象包含有关当前页面 URL 的信息,并提供了一些与页面导航相关的方法。
  • 通过 window.location,可以获取当前页面的 URL、查询字符串参数、路径等信息,并且可以使用一些方法来导航到其他页面。
  • 例如,要在新标签页中打开一个 URL:
window.location.href = 'https://example.com';

(1)window.location.href*

  • 获取当前页面的完整 URL(包括协议、域名、路径等)。
let currentURL = window.location.href;
console.log(currentURL);

// 跳转到目标地址
window.href = "url地址" 

(2)window.location.protocol

  • 获取当前页面的协议部分(例如 'http:' 或 'https:')。
let protocol = window.location.protocol;
console.log(protocol);

(3)window.location.host

  • 获取当前页面的主机(域名和端口号)部分。
let host = window.location.host;
console.log(host);

(4)window.location.hostname

  • 获取当前页面的主机名部分。
let hostname = window.location.hostname;
console.log(hostname);

(5)window.location.port

  • 获取当前页面的端口号部分。
let port = window.location.port;
console.log(port);

(6)window.location.pathname

  • 获取当前页面的路径部分。
let pathname = window.location.pathname;
console.log(pathname);

(7)window.location.search

  • 获取当前页面的查询参数部分(即 URL 中问号后面的内容)。
let searchParams = window.location.search;
console.log(searchParams);

(8)window.location.hash

  • 获取当前页面的片段标识部分(即 URL 中井号后面的内容)。
let hash = window.location.hash;
console.log(hash);

(9)window.location.assign()

  • 将当前页面重定向到指定的 URL。
// 将当前页面重定向到 example.com
window.location.assign("http://example.com");

(10)window.location.reload()*

  • 重新加载当前页面。
// 重新加载当前页面
window.location.reload();

【3】window.history

  • 此子对象用于操作浏览器的历史记录,包括向前和向后导航。

    • 通过 window.history,可以使用一些方法来在历史记录中向前或向后导航,以及获取当前历史记录的状态数量。
  • 例如,要后退到上一个页面:

window.history.back();

(1)window.history.length

  • 返回当前会话的历史记录条目数。
let historyLength = window.history.length;
console.log(historyLength);

(2)window.history.back()*

  • 加载上一个历史记录。相当于用户点击浏览器的后退按钮。
window.history.back();

(3)window.history.forward()*

  • 加载下一个历史记录。相当于用户点击浏览器的前进按钮。
window.history.forward();

(4)window.history.go()

  • 根据传入的整数参数,加载相对于当前历史记录的某个条目。负数表示后退,正数表示前进, 表示重新加载当前页。
// 后退两个历史记录
window.history.go(-2);

// 前进一个历史记录
window.history.go(1);

// 重新加载当前页
window.history.go();

(5)window.history.pushState()

  • 向浏览器历史记录中添加新的状态,并且不会触发页面的重新加载。它接受三个参数:state、title 和 URL。
// 添加新的历史记录状态
window.history.pushState({ page: 1 }, "Page 1", "/page1.html");

(6)window.history.replaceState()

  • 替换当前的历史记录状态,不会触发页面的重新加载。它接受三个参数:state、title 和 URL。
// 替换当前历史记录状态
window.history.replaceState({ page: 2 }, "Page 2", "/page2.html");

【4】window.navigator

  • 此子对象提供有关浏览器环境和设备的信息,包括用户代理字符串、浏览器版本、操作系统等。
  • 例如,要获取用户代理字符串:
let userAgent = window.navigator.userAgent;
console.log(userAgent);

(1)window.navigator.userAgent*

  • 返回浏览器的用户代理字符串,该字符串包含了有关浏览器厂商、版本号以及操作系统等信息。(该方法可以用来校验反爬程序)
let userAgent = window.navigator.userAgent;
console.log(userAgent);

(2)window.navigator.platform*

  • 返回操作系统平台,如 "Win32"、"MacIntel" 等。
let platform = window.navigator.platform;
console.log(platform);

(3)window.navigator.vendor

  • 返回浏览器的厂商或供应商名称。
let vendor = window.navigator.vendor;
console.log(vendor);

(4)window.navigator.language

  • 返回浏览器的首选语言,通常是用户操作系统的默认语言。
let language = window.navigator.language;
console.log(language);

(5)window.navigator.cookieEnabled

  • 返回一个布尔值,表示浏览器是否启用了 cookie。
let cookieEnabled = window.navigator.cookieEnabled;
console.log(cookieEnabled);

(6)window.navigator.plugins

  • 返回一个包含浏览器插件列表的 PluginArray 对象。
let plugins = window.navigator.plugins;
console.log(plugins);

标签:console,log,DOM,window,Window,let,BOM,浏览器,location
From: https://www.cnblogs.com/chosen-yn/p/18458105

相关文章

  • Window系统编程 - 文件操作
    前言各位师傅大家好,我是qmx_07,今天主要介绍使用windows系统编程操作读写文件文件CreateFile()函数讲解介绍:该函数用于打开文件或者I/O流设备,文件、文件流、目录、物理磁盘、卷、控制台缓冲区、磁带驱动器、通信资源、mailslot和管道接下来我们学习一下CreateFile......
  • 2024-10-11 自定义渲染之arco-design-vue table的columns的title ==》使用DOM插入子元
    嗯...不知我没找到arco对应tabletitle的自定义渲染的正确方式 但我已经找了1个小时了,既然没找到就自己插入吧业务场景如下: 给表头插入一个必填的符号*,就这么简单的需求。代码如下:constelements:any=document.querySelectorAll('.arco-table-th-title');elements.f......
  • SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。
    SMB签名是ServerMessageBlock(SMB)协议中的一种安全机制,旨在确保数据的完整性和身份验证。1.什么是SMB签名?SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。它通过对数据进行哈希处理,并附加一个签名,确保接收方能够确认收到的数据没有被篡改。......
  • windowns11更新关闭(2024.10.11最新方法)(通过修改暂停更新参数)
    目前无副作用,原理是使得win11系统更新设置处的暂停更新时间延长来达到暂停更新。方法:win+r,输入regedit打开注册表(如不知道,可以打开“此电脑”访问如下路径:C:\Windows\regedit.exe)2.打开注册表的这个路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settin......
  • 基于Window网络编程课程设计(刘琰著)写tcp和udp双回射服务器思想及代码实现
    再写一遍双回射,主要还是按照书上走,也方便自己回顾理解而且这个代码完美解决了tcp阻塞问题,其实看懂这个代码也理解了为什么上篇的代码网络编程——实现tcp和udp的双回射服务器(c++)-CSDN博客会被阻塞,读者可以自己思考下本书还是采用的是select的方法来实现双回射的服务器。一......
  • Window10 系统 RabbitMQ 的简单使用
    启动RabbitMQ服务进入到rabbitmq的安装bin目录netstartRabbitMQ或者在rabbitmq的sbin目录下,双击执行rabbitmq-server.bat文件。停止RabbitMQ服务netstopRabbitMQ查看服务状态rabbitmqctlstatus页面访问RabbitMQ初始的登录网址和登陆密码http://......
  • 组合定位-GPS-IMU-Odom
    组合定位GPS遵守NMEA0184GPS每次测量都是独立的,即与上次测量无关,所以不存在误差累计不同IMU器件,其驱动是不同的IMU存在数据漂移,测量相对位置GPS/INS组合制导INS是惯性导航系统(InertialNavigationSystem)的GPS/DR组合定位系统的组成:GPS传感器;odom:novatel/odom-pos......
  • Windows 或Office 激活失败 错误代码 0x80072F8F
    国庆节收假回来,工作站上几台电脑出现问题,重新修复,更换硬件(主板)或是重装系统,最终需要激活成为正版来使用。其中一台,在激活时,Windows激活失败错误代码0x80072F8F,发现日期与时间不正确: 把时间改正之后,终于激活Windows。 哈哈......在另外一台电脑上,Windows是激活的,但需要......
  • Windows-WMI 事件 ID 10或0x80041003——解决过程
    2024年10月8日国庆节后,第一天上班,实验室里一台PC机出现故障,Windows7系统,可以正常启动进入安全模式,但是正常启动无法加载桌面,可以看见鼠标,Ctrl+Alt+Del无法调出任务管理器。开始处理,进入安全模式,查看系统日志。发现一个错误如下(截取自[https://www.cnblogs.com/longware/p/78231......
  • kms激活Windows
    安装KMS服务个人是在软路由系统中安装的,安装请另外寻找服务器安装KMS教程使用命令行进行激活1.卸载当前激活的秘钥(管理员启动命令行)slmgr/upk2.安装新的秘钥秘钥在KMS软件的日志中,自行寻找slmgr/ipkXXXX-XXXX-XXXXXX3.设置KMS服务器地址可以输入内网地址slmg......