js基础-数组-事件对象-日期-本地存储

news2024/12/24 21:31:55

一、大纲

一、获取元素位置

在JavaScript中,获取一个元素在页面上的位置可以通过多种方法实现。以下是一些常见的方法:

  1. getBoundingClientRect()

    getBoundingClientRect() 方法返回元素的大小及其相对于视口的位置。它提供了元素的lefttoprightbottom属性,这些属性表示元素在视口中的位置。

     

    var rect = document.getElementById('myElement').getBoundingClientRect(); console.log(rect.left, rect.top); // 元素相对于视口左上角的坐标

  2. elementFromPoint(x, y)

    elementFromPoint(x, y) 方法返回位于页面上给定坐标(x, y)的元素。这个方法属于document对象,因此可以直接在document上调用。

     

    var element = document.elementFromPoint(x, y); console.log(element); // 返回位于(x, y)坐标的元素

  3. offsetTopoffsetLeft

    offsetTopoffsetLeft 属性返回元素的顶部和左侧边缘相对于其最近的定位的祖先元素的偏移。

     

    var element = document.getElementById('myElement'); console.log(element.offsetTop, element.offsetLeft); // 元素相对于其定位的祖先元素的偏移

  4. getComputedStyle()

    getComputedStyle() 方法返回一个对象,该对象包含元素的所有当前计算后的样式属性的值,包括positiontopleft等。

     

    var style = window.getComputedStyle(document.getElementById('myElement')); console.log(style.position, style.top, style.left); // 获取元素的计算后样式

  5. position 属性

    position 属性可以告诉你元素的定位方式(如staticrelativeabsolutefixedsticky),这有助于你了解元素的位置是如何确定的。

     复制 

    var element = document.getElementById('myElement'); console.log(element.style.position); // 获取元素的定位方式

二、日期

1.newDate()

2.显示格式

3.时间戳

推荐+

案例:

在编程和计算机科学中,时间戳是一个表示特定时刻的数字。在不同的上下文中,时间戳可以有不同的含义和格式,以下是一些常见的时间戳概念:

  1. Unix 时间戳:

    • 这是最常见的时间戳格式,表示从1970年1月1日UTC(协调世界时)开始的秒数(不包括闰秒)。在JavaScript中,可以通过Date.now()函数获取当前的Unix时间戳。
     

    var timestamp = Date.now(); // 获取当前的Unix时间戳(毫秒)

    如果需要秒为单位的Unix时间戳,可以使用Date对象的getTime()方法或Date.UTC()方法。

     

    var timestampInSeconds = Math.floor(Date.now() / 1000); var timestampInSeconds = new Date().getTime() / 1000; var timestampInSeconds = Date.UTC(year, month, day, hour, minute, second);

  2. ISO 8601 时间戳:

    • 这是一种使用日期和时间的国际标准表示法,格式通常为YYYY-MM-DDTHH:mm:ss.sssZ,其中T是一个分隔符,Z表示UTC时区(或用+hh:mm-hh:mm表示时区偏移)。
     

    var timestamp = new Date().toISOString(); // 转换为ISO格式的时间字符串

  3. 性能时间戳 (Performance Timestamp):

    • 在Web开发中,performance.now()可以提供比Date.now()更高精度的时间戳,通常用于测量性能。
     

    var performanceTimestamp = performance.now(); // 获取高精度时间戳

  4. 时间戳转换:

    • 可以将Unix时间戳转换为更易读的日期格式,反之亦然。
     

    var date = new Date(timestamp); // 将Unix时间戳转换为Date对象 var timestamp = date.getTime(); // 将Date对象转换为Unix时间戳

  5. 时间戳的用途:

    • 时间戳常用于记录事件发生的时间点,如服务器日志、数据库记录、用户操作时间等。
    • 在分布式系统中,时间戳用于同步事件顺序和解决冲突。
    • 在性能分析中,时间戳用于测量代码执行时间。
  6. 时间戳的存储:

    • 时间戳通常以整数或浮点数存储,取决于所需的时间精度。
  7. 时间戳的时区问题:

    • 时间戳通常表示为UTC时间,但在实际应用中,需要考虑时区转换。

在JavaScript中,处理时间戳时,需要注意时区和精度问题,以确保正确地表示和处理时间。

三、dom节点(dom树)

DOM(文档对象模型,Document Object Model)是HTML和XML文档的编程接口。它将网页结构化为一个由节点和对象(如元素、属性和文本)组成的树状结构,允许开发人员以编程方式访问和操作网页内容。

在DOM树中,每个节点(node)代表文档中的一个对象或结构,以下是一些常见的节点类型:

  1. 元素节点(Element node):

    • 代表HTML中的一个元素,如<div><p><a>等。
  2. 属性节点(Attribute node):

    • 代表元素的一个属性,如class="example"id="myId"
  3. 文本节点(Text node):

    • 包含元素或属性的文本内容,如<p>这是一个文本节点。</p>中的“这是一个文本节点。”
  4. 注释节点(Comment node):

    • 包含文档的注释,它们在浏览器中不显示,但可以在HTML源代码中看到。
  5. 文档类型节点(DocumentType node):

    • 代表文档类型声明,如<!DOCTYPE html>
  6. 文档节点(Document node):

    • 代表整个文档,是DOM树的根节点。
  7. 文档片段节点(DocumentFragment node):

    • 一个轻量级的DOM节点,用作DOM树的临时容器,常用于批量操作。
  8. CDATA节节点(CDATASection node):

    • 包含不应由XML解析器解析的文本。

在JavaScript中,可以使用DOM API来创建、修改、删除和查询DOM节点。以下是一些基本的DOM操作:

创建节点:

var newNode = document.createElement('div');
添加节点:

parentElement.appendChild(newNode);
删除节点:

parentElement.removeChild(oldNode);
替换节点:

parentElement.replaceChild(newNode, oldNode);
查询节点:

var element = document.getElementById('myId');
修改内容:

element.textContent = '新内容';
element.innerHTML = '<div>新HTML内容</div>';
获取属性:

var attributeValue = element.getAttribute('class');
设置属性:

element.setAttribute('class', 'newValue');
监听事件:

element.addEventListener('click', function() {
  console.log('元素被点击了');
});

M端事件(移动端)

四、location当前浏览上下文的一些信息

在JavaScript中,location 对象是一个内置对象,它提供了当前浏览上下文的一些信息,以及一些用于导航到不同的文档的方法。location 对象是 Window 对象的一部分,因此通常在浏览器环境中可以直接使用它。

以下是一些常用的 location 对象属性和方法:

location.href:

表示当前页面的URL。可以读取这个属性来获取当前页面的地址,也可以赋值一个新的URL来导航到另一个页面。
console.log(location.href); // 打印当前页面的URL
location.href = 'https://www.example.com'; // 重定向到新的URL
location.search:

表示URL中的查询字符串部分,即?后面的部分。
console.log(location.search); // 打印查询字符串
location.pathname:

表示URL中的路径部分。
console.log(location.pathname); // 打印URL路径
location.hash:

表示URL中的哈希部分,即#后面的部分。
console.log(location.hash); // 打印URL哈希
location.assign():

加载一个新的文档。
location.assign('https://www.example.com'); // 导航到指定的URL
location.replace():

用另一个文档替换当前的资源。与 assign() 不同的是,使用 replace() 后,新页面不会添加到浏览器的历史记录中。
location.replace('https://www.example.com'); // 替换当前页面
location.reload():

重新加载当前页面。默认情况下,它会从服务器重新加载页面,但也可以提供一个参数来控制是否要从缓存中加载。
location.reload(); // 从服务器重新加载当前页面
location.reload(true); // 强制从服务器加载
location.toString():

返回整个URL的字符串表示。
console.log(location.toString()); // 打印完整的URL
location.ancestorOrigins:

只读属性,返回一个包含当前页面所有祖先页面源点(origins)的数组。
console.log(location.ancestorOrigins); // 打印当前页面的祖先源点
通过使用 location 对象,你可以在JavaScript中实现页面跳转、获取当前页面的URL信息等操作。这些操作对于动态Web应用的开发非常重要。

1.跳转页面

2.路由基础(地址栏变化)

3.刷新界面 

五、navigator

navigator 是 Web 浏览器提供的 JavaScript 对象,它用于解决以下问题:

  1. 用户代理检测

    • 通过 navigator.userAgent 获取用户代理字符串,可以检测访问网页的浏览器类型、版本以及操作系统信息。
  2. 客户端能力检测

    • 了解客户端(浏览器)的能力,如是否支持 cookies(navigator.cookieEnabled)、是否处于在线状态(navigator.onLine)、支持的触摸点数(navigator.maxTouchPoints)等。
  3. 地理位置定位

    • 使用 navigator.geolocation 对象获取用户的地理位置信息,这在需要提供地理位置相关服务时非常有用,如地图服务、本地搜索等。
  4. 网络状态监测

    • 通过 navigator.onLine 属性监测用户的网络连接状态,这对于提供离线体验或网络状态提示很有帮助。
  5. 浏览器特性检测

    • 检测浏览器是否支持某些特定的特性或 API,如 WebRTC、Service Workers、WebGL 等。
  6. 国际化和本地化

    • 获取用户的语言偏好(navigator.language),以便提供本地化的网页内容。
  7. 跨源通信

    • 使用注册协议处理程序(navigator.registerProtocolHandler())实现跨源或跨应用的通信。
  8. 性能优化

    • 通过 navigator.sendBeacon() 方法在页面卸载时发送小体积的异步数据,减少对用户离开页面时的影响。
  9. 安全性和隐私

    • 了解浏览器的安全特性,如是否支持 HTTPS 或其他安全协议。
  10. 用户个性化体验

    • 根据用户代理数据(navigator.userAgentData)提供定制化的用户体验或提示用户升级浏览器。

navigator 对象为开发者提供了丰富的信息,使得开发者能够根据客户端的特性和能力来优化网页的功能和性能,提供更好的用户界面和交互体验。然而,使用 navigator 对象时也需要考虑隐私和安全问题,避免不当使用用户信息。

在实际开发中,一般会结合其他特性检测方法,如特性检测(feature detection)、能力检测(capability detection),以及避免过度依赖用户代理字符串,因为用户代理字符串可以被伪造,且仅依赖它进行检测可能导致误判。

在Web开发中,navigator 是 JavaScript 的一个全局对象,它提供了关于浏览器的信息,包括用户代理字符串(user agent string)、浏览器和操作系统的语言、以及浏览器插件等信息。navigator 对象是 Window 对象的一部分,因此可以直接在浏览器环境中访问。

以下是一些 navigator 对象的常用属性和方法:

以下是一些 navigator 对象的常用属性和方法:

navigator.userAgent:

返回一个包含浏览器名称和版本信息的字符串。
console.log(navigator.userAgent);
navigator.platform:

返回用户的操作系统的字符串表示。
console.log(navigator.platform);
navigator.language 或 navigator.languages:

返回用户偏好的语言代码。
console.log(navigator.language); // 例如: "en-US"
console.log(navigator.languages); // 返回一个包含用户偏好语言的数组
navigator.onLine:

返回一个布尔值,指示客户端是否连接到互联网。
console.log(navigator.onLine); // true 或 false
navigator.cookieEnabled:

返回一个布尔值,指示浏览器是否启用了 cookies。
console.log(navigator.cookieEnabled); // true 或 false
navigator.maxTouchPoints:

返回一个整数,表示设备支持的最大触摸点数。
console.log(navigator.maxTouchPoints);
navigator.geolocation:

提供了访问用户设备地理位置信息的接口。
navigator.geolocation.getCurrentPosition(
  function(position) {
    console.log(position.coords.latitude, position.coords.longitude);
  },
  function(error) {
    console.error(error);
  }
);
navigator.userAgentData:

提供了访问用户代理的品牌、版本以及其它相关信息的接口。
console.log(navigator.userAgentData.brands); // 返回浏览器品牌的数组
console.log(navigator.userAgentData.mobile); // 检查是否为移动设备
navigator.serviceWorker:

提供了与浏览器中的 Service Workers 交互的接口。
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js');
}
navigator.registerProtocolHandler():

允许网站注册自定义协议处理程序。
navigator.sendBeacon():

允许在页面卸载时异步传输小数据。

使用 navigator 对象时,需要注意隐私和安全问题,因为某些属性可能会泄露用户的敏感信息。例如,userAgent 字符串可以被用来识别用户使用的浏览器和操作系统,这可能会被用于不正当的跟踪或浏览器指纹识别。

此外,由于 navigator 对象包含很多属性和方法,不同的浏览器和操作系统可能会有不同的实现,因此在跨浏览器兼容性方面需要特别注意。

注意:立即执行函数写法!

六、histroy(前进后退)

七、本地存储

浏览器本地存储是Web应用程序中用于存储数据的一种机制,允许数据保留在用户的设备上,而不是在服务器上。这有助于提高性能、减少服务器负载,并可以改善用户在离线状态下的体验。以下是一些常见的浏览器本地存储技术:

  1. Cookie:

    • 最早的浏览器存储技术之一。Cookie 很小(一般不超过4KB),并且会在每次请求时被发送到服务器,适合存储会话信息或个人偏好设置。
  2. Web Storage (localStorage 和 sessionStorage):

    • 提供了超过Cookie的存储容量,localStorage 没有大小限制,但大多数浏览器限制在大约5MB左右。localStorage 用于长期存储整个网站的数据,而 sessionStorage 为单个会话提供数据存储,当用户关闭浏览器标签或窗口时,数据会被清除

  3. IndexedDB:是一种低等级的API用于客户端的存储,可以存储大量数据,包括字符串、文件、图片等。IndexedDB 提供了比 Web Storage 更复杂的数据存储能力,支持事务、键值对索引以及更复杂的查询。

localStorage 示例:

localStorage.setItem('username', 'JohnDoe');
var username = localStorage.getItem('username');
localStorage.removeItem('username');
sessionStorage 示例:

sessionStorage.setItem('viewState', 'someValue');
var viewState = sessionStorage.getItem('viewState');
sessionStorage.removeItem('viewState');

1.localStorage

注意:只能存字符串

复杂类型存储

转回来

// 存储对象
var obj = { name: "John", age: 30 };
localStorage.setItem('user', JSON.stringify(obj));

// 读取对象
var userStr = localStorage.getItem('user');
var userObj = JSON.parse(userStr);

2.sessionStorage

八、数组函数(map和join)

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

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

相关文章

Tkinter组件:Text-显示和处理多行文本

Tkinter组件&#xff1a;Text Text&#xff08;文本&#xff09;组件用于显示和处理多行文本。在 Tkinter 的所有组件中&#xff0c;Text 组件显得异常强大和灵活&#xff0c;适用于多种任务。虽然该组件的主要目的是显示多行文本&#xff0c;但它常常也被用于作为简单的文本编…

【单片机调试】mcu调试bug记录

【单片机调试】mcu调试bug记录 2023.5-2023.11待输入 2023.12-2023.22024.3-至今1.spi通信问题 2023.5-2023.11 待输入 2023.12-2023.2 辞职阶段&#xff1a;【STM32调试】寄存器调试不良问题记录持续版 2024.3-至今 1.spi通信问题 现象说明&#xff1a; mcu与afe芯片为spi通…

为什么使用AI 在游戏中不犯法

使用AI在游戏中本身并不违法&#xff0c;甚至在很多情况下&#xff0c;游戏公司自己也会在游戏中集成AI来提高游戏体验&#xff0c;例如通过AI驱动的非玩家角色&#xff08;NPC&#xff09;来增加游戏的互动性和挑战性。然而&#xff0c;使用AI是否违法取决于AI的使用方式和目的…

设计一个游戏的基本博弈框架

设计一个游戏的基本博弈框架&#xff0c;玩家通过操作改变某个数值&#xff0c;这个数值的变动会引发一系列实时变化&#xff0c;并且当这些数值累计到特定阈值时&#xff0c;会导致游戏中出现其他变化&#xff0c;可以分为以下几个步骤&#xff1a; 1. 确定游戏类型和主题 首…

邮件地址采集软件有哪些-邮箱地址采集软件

邮件地址采集软件是帮助用户收集、管理和使用邮件地址的工具&#xff0c;它们在商业营销、市场调研、网络爬虫等领域有着广泛的应用。以下是一些常见的邮件地址采集软件&#xff1a; 易邮件地址搜索大师&#xff1a;易邮件地址搜索大师是一款搜索邮件地址和手机号码的软件&…

一篇文章拿下Redis 通用命令

文章目录 Redis数据结构介绍Redis 通用命令命令演示KEYSDELEXISTSEXPIRE RedisTemplate 中的通用命令 本篇文章介绍 Redis 的通用命令, 通用命令在 Redis 的所有数据类型下都使用, 学好通用命令可以让我们更好的使用 Redis. Redis数据结构介绍 Redis 是一个key-value的数据库&…

如何进行免杀

0x03 免杀思路总结 环境准备&#xff1a; 火绒&#xff08;静态&#xff09;、360、windowsdef&#xff08;动态&#xff09; 免杀的最基本思路就是去除其特征&#xff0c;这个特征有可能是特征码&#xff0c;也有可能是行为特征&#xff0c;只要在不修改其 原有功能的情况下…

基于C#开发web网页管理系统模板流程-登录界面

前言&#xff0c;首先介绍一下本项目将要实现的功能 &#xff08;一&#xff09;登录界面 实现一个不算特别美观的登录窗口&#xff0c;当然这一步跟开发者本身的设计美学相关&#xff0c;像蒟蒻博主就没啥艺术细胞&#xff0c;勉强能用能看就行…… &#xff08;二&#xff09…

极验3滑块逆向分析

1、底图还原 下 断点&#xff0c;可以分析底图还原逻辑 2、跟W值 var Str_Unicodefunction(str){var unid\\u00;for(let i0,lenstr.length;i<len;i){if(i<len-1){unidstr.charCodeAt(i).toString(16)\\u00;}else if(ilen-1){unidstr.charCodeAt(i).toString(16);}}re…

【数据结构】数组循环队列的实现

队列&#xff08;Queue&#xff09;是一种特殊的线性数据结构&#xff0c;它遵循FIFO&#xff08;First In First Out&#xff0c;先入先出&#xff09;的原则。队列只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#…

【408精华知识】提高外部排序速度的三种方式

文章目录 一、败者树二、置换-选择排序三、最佳归并树 一、败者树 还没写完… 二、置换-选择排序 三、最佳归并树 写在后面 这个专栏主要是我在学习408真题的过程中总结的一些笔记&#xff0c;因为我学的也很一般&#xff0c;如果有错误和不足之处&#xff0c;还望大家在评…

HTML的使用(上)

文章目录 前言一、HTML是什么&#xff1f;二、使用内容 &#xff08;1&#xff09;换行标记<br>&#xff08;2&#xff09;加粗标记<b> </b>&#xff08;3&#xff09;段落标记<p> </p>&#xff08;4&#xff09;标题标记<h1>~<h6> …

Autosar架构

蓝框那种叫component&#xff0c;绿框的叫function cluster。 接口 有三种接口&#xff0c;RTE跟SWC之间链接的叫Autosar Interface&#xff0c;RTE跟BSW的Components链接是Standardized Interface&#xff0c;RTE跟BSW的services链接的是Standardized Autosar Interface。 St…

P6397 [COI2008] GLASNICI

题目描述 一条直线上有 &#x1d45b; 个信使&#xff0c;将他们按照从左至右的顺序以 1 至 &#x1d45b; 编号。换句话说&#xff0c;设 &#x1d456; 号信使的的坐标为 &#x1d451;&#x1d456;​&#xff0c;则对于 1≤&#x1d456;<&#x1d45b;&#xff0c; &am…

Vue 中动态与静态处理 Element UI/Element Plus 组件禁用状态样式

目录 一、静态样式修改 - 使用 ::v-deep 穿透组件样式二、选择器的优先级和匹配顺序三、动态添加样式 - 使用 Vue 实例属性&#xff08;非推荐&#xff09;四、区别总结五、应用场景总结 本文主要探讨在 Vue.js 项目中&#xff0c;特别是搭配 Element UI 或 Element Plus 组件库…

多维 HighChart

showHighChart.html <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><!-- js脚本都是官方的,后两个是highchart脚本 --><script type"text/javascript" src"jquery1.7.1.min.js"&g…

10.nginx模板(开启监控取值页面)

nginx模板(开启监控取值页面) 1.开启监控页面 vim nginx.conflocation /nginx_status {stub_status;} systemctl restart nginx.server网页展示 导入模板&#xff0c;nginx监控模板zbx_nginx_template.xml <?xml version"1.0" encoding"UTF-8"?…

智慧畜牧:RFID技术在现代屠宰场的应用

智慧畜牧&#xff1a;RFID技术在现代屠宰场的应用 RFID猪肉溯源管理解决方案是一种利用无线射频识别&#xff08;Radio Frequency Identification&#xff0c;简称RFID&#xff09;技术来实现猪肉从养殖、屠宰到销售整个供应链过程中的追踪与追溯的现代化管理手段。这一方案通…

微服务部署不迷茫:4大部署模式深度解析,轻松驾驭云原生时代

微服务部署最全详解(4种常见部署模式) 微服务多实例部署 每个微服务都独立部署在自己的运行环境中&#xff0c;这是微服务架构的核心思想。 一般会采用每个主机多个服务实例&#xff0c;如下所示&#xff1a; 这是一种传统的应用部署方法&#xff0c;每个服务实例在一个或多个…

万事通,专精部分领域的多功能 Transformer 智能体

介绍 我们很高兴分享“万事通”(Jack of All Trades&#xff0c;简称 JAT) 项目&#xff0c;该项目旨在朝着通用智能体的方向发展。该项目最初是作为对 Gato (Reed 等&#xff0c;2022 年) 工作的公开复现启动的&#xff0c;Gato 提出训练一种能够执行视觉与语言以及决策任务的…