解决常见JS问题的19个实用 ES6 片段

JS 安全随机数 window.crypto及其兼容性     在JS中经常使用Math.Random|()函数来产生随机数,但这个函数产生的随机数并不具有真正的随机性,而且加密型不够强。因此在特定的需要加密性强的安全随机数时,可以使用JS提供的windows.crypto来生成随机数。     Window.crypto只读属性返回与全局对象关联的 Crypto对象。 这个对象允许网页访问某些加密相关服务。     为了确保足够的性能,不使用真正的随机数生成器,但是它们正在使用具有足够熵值伪随机数生成器。它所使用的 PRNG 的实现与其他不同,但适用于加密的用 阅读详情

在我们的开发人员工作流程中,我们经常会遇到具有挑战性的问题,这些问题可能只需要几行代码就可以解决。在本文中,我试图编译有用的片段,这些片段可能会在您处理 URL、DOM、事件、日期、用户首选项等时为您提供帮助。

所有的片段都是精心挑选出来的。这是一个很棒的资源,我强烈建议您去查看更多内容。策划这些的主要标准是实际可用性。希望您会发现一些有价值的东西,您可以将其应用到您未来的代码库中。


1、如何获取base URL?

const getBaseURL = url => url.replace(/[?#].*$/, '');

getBaseURL('http://url.com/page?name=Adam&surname=Smith');
// 'http://url.com/page'

2、如何判断URL是否绝对?

const isAbsoluteURL = str => /^[a-z][a-z0-9+.-]*:/.test(str);

isAbsoluteURL('https://google.com'); // true
isAbsoluteURL('ftp://www.myserver.net'); // true
isAbsoluteURL('/foo/bar'); // false

3.如何获取URL参数作为对象?

const getURLParameters = url =>
(url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(
  (a, v) => (
    (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a
  ),
  {}
);

getURLParameters('google.com'); // {}
getURLParameters('http://url.com/page?name=Adam&surname=Smith');
// {name: 'Adam', surname: 'Smith'}

4.如何检查元素是否包含另一个元素?

const elementContains = (parent, child) =>
 parent !== child && parent.contains(child);

elementContains(
 document.querySelector('head'),
 document.querySelector('title')
);
// true
elementContains(document.querySelector('body'), document.querySelector('body'));
// false

5.如何获取元素的所有祖先?

const getAncestors = el => {
 let ancestors = [];
 while (el) {
   ancestors.unshift(el);
   el = el.parentNode;
}
 return ancestors;
};

getAncestors(document.querySelector('nav'));
// [document, html, body, header, nav]

6.如何平滑滚动元素进入视图?

const smoothScroll = element =>
 document.querySelector(element).scrollIntoView({
   behavior: 'smooth'
});

smoothScroll('#fooBar'); // scrolls smoothly to the element with the id fooBar
smoothScroll('.fooBar');
// scrolls smoothly to the first element with a class of fooBar

7. 如何处理元素外的点击?

const onClickOutside = (element, callback) => {
 document.addEventListener('click', e => {
   if (!element.contains(e.target)) callback();
});
};

onClickOutside('#my-element', () => console.log('Hello'));
// Will log 'Hello' whenever the user clicks outside of #my-element

8.如何生成UUID?

const UUIDGeneratorBrowser = () =>
([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
  (
     c ^
    (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))
  ).toString(16)
);

UUIDGeneratorBrowser(); // '7982fcfe-5721-4632-bede-6000885be57d'

9、如何获取选中的文字?

const getSelectedText = () => window.getSelection().toString();

getSelectedText(); // 'Lorem ipsum'

10.如何将文字复制到剪贴板?

const copyToClipboard = str => {
 if (navigator && navigator.clipboard && navigator.clipboard.writeText)
   return navigator.clipboard.writeText(str);
 return Promise.reject('The Clipboard API is not available.');
};

11.如何给HTML元素添加样式?

const addStyles = (el, styles) => Object.assign(el.style, styles);

addStyles(document.getElementById('my-element'), {
 background: 'red',
 color: '#ffff00',
 fontSize: '3rem'
});

12.如何切换全屏模式?

const fullscreen = (mode = true, el = 'body') =>
 mode
   ? document.querySelector(el).requestFullscreen()
  : document.exitFullscreen();

fullscreen(); // Opens `body` in fullscreen mode
fullscreen(false); // Exits fullscreen mode

13.如何检测Caps lock是否开启?

<form>
 <label for="username">Username:</label>
 <input id="username" name="username">

 <label for="password">Password:</label>
 <input id="password" name="password" type="password">
 <span id="password-message" style="display: none">Caps Lock is on</span>
</form>
const el = document.getElementById('password');
const msg = document.getElementById('password-message');

el.addEventListener('keyup', e => {
 msg.style = e.getModifierState('CapsLock')
   ? 'display: block'
  : 'display: none';
});

14.如何查看日期是否有效?

const isDateValid = (...val) => !Number.isNaN(new Date(...val).valueOf());

isDateValid('December 17, 1995 03:24:00'); // true
isDateValid('1995-12-17T03:24:00'); // true
isDateValid('1995-12-17 T03:24:00'); // false
isDateValid('Duck'); // false
isDateValid(1995, 11, 17); // true
isDateValid(1995, 11, 17, 'Duck'); // false
isDateValid({}); // false

15. 如何从 Date 中获取冒号时间?

const getColonTimeFromDate = date => date.toTimeString().slice(0, 8);

getColonTimeFromDate(new Date()); // '08:38:00'

16. 如何从 Date 生成 UNIX 时间戳?

const getTimestamp = (date = new Date()) => Math.floor(date.getTime() / 1000);

getTimestamp(); // 1602162242

17、如何查看当前用户的首选语言?

const detectLanguage = (defaultLang = 'en-US') =>
 navigator.language ||
(Array.isArray(navigator.languages) && navigator.languages[0]) ||
 defaultLang;

detectLanguage(); // 'nl-NL'

18. 如何查看用户偏好的配色方案?

const prefersDarkColorScheme = () =>
 window &&
 window.matchMedia &&
 window.matchMedia('(prefers-color-scheme: dark)').matches;

prefersDarkColorScheme(); // true

19. 如何查看设备是否支持触摸事件?

const supportsTouchEvents = () =>
 window && 'ontouchstart' in window;

supportsTouchEvents(); // true

写作一直是我的热情所在,它让我乐于帮助和启发人们。如有任何疑问,请随时与我们联系!如果对你有帮助,记得点赞支持!

如果你正在学前端,可以关注我们!

 

生产环境下oracle19c rac恢复节点2 现状:目前节点1数据库集群服务处于正常,节点2服务器由于系统故障无法恢复,确认系统重装。目标:不影响业务的情况下,重新把节点2添加回集群中。 阅读详情

相关推荐

SAP CO模块实战:成本中心会计分割结构配置全流程(OKES事务码详解)

本文详细解析了SAP CO模块中成本中心会计分割结构的配置全流程,重点讲解了OKES事务码的实战操作。内容涵盖分割结构的概念理解、配置前的次级成本要素与作业类型主数据准备,并通过步骤拆解演示了如何定义分割结构、规则与版本,以及如何将配置关联到成本中心并执行分割。最后提供了常见问题排查与优化建议,旨在帮助顾问及财务人员掌握成本精确分摊的关键配置,确保期末成本核算的准确性。

embedding5hiker的博客 805

JS 安全随机数 Math.random Window.crypto.getRandomValues()

随机0-1的一个数字,但是这个公司不给用,codecheck不通过,所以就只能替换了。问了问公司群,说可以用时间戳或者Window.crypto.getRandomValues()替换。还是没有用,最后自己写了个方法实现,测试了下,没问题。

wnk1997的博客 1299

AutoCAD2016安装破解教程

AutoCAD2016安装破解教程。本人亲自实验,破解成功,有效。以64位为例。 工具/原料   笔记本电脑 AutoCAD2016安装包 AutoCAD2016注册机(xf-adsk2016_x64.exe)链接:http://pan.baidu.com/s/1cAZQA windows7/8/8.1/10-32...

weixin_33804990的博客 1万+

Math.random 与 Window.crypto.getRandomValues()

文章目录一、Math.random()获取随机数二、Window.crypto.getRandomValues()获取符合密码学要求的安全的随机值 一、Math.random() 获取随机数 获取xx以内的随机数:Math.random() * xx 举个例子,获取 n个字母 //创建26个字母数组 let arr = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X

阿喵超咸 6492

告别裸机:在FreeRTOS上为STM32移植SOEM EtherCAT主站的思路与实战

本文详细介绍了在FreeRTOS环境下为STM32移植SOEM EtherCAT主站的工程实践。通过重构任务调度模型、优化内存管理和中断响应,成功将通信周期抖动控制在±100ns以内,满足工业控制系统的严苛实时性要求。文章包含完整的移植策略、性能优化方法和实测数据,为开发者提供了一套可靠的EtherCAT主站解决方案。

weixin_30342363的博客 388

【stm32+K210项目】基于K210与STM32协同工作的智能垃圾分类系统设计与实现(完整工程资料源码)

本系统采用SG90舵机Maix Bit摄像头STM32C8T6主控板以及LX_TRIG_MP3_V6.0语音播报模块,构建了一套高效的智能垃圾分类系统,综合运用了图像识别、语音播报及精准控制技术。SG90舵机负责控制垃圾桶的开盖操作。该舵机通过接收PWM信号来实现转动,内部有一个基准电路产生周期为20ms的PWM信号,通过外部脉冲信号的控制(高电平时间在0.5ms至2.5ms之间),使得舵机的输出轴转动到指定位置。舵机内的位置反馈电位计。

嵌入式技术开发 5100

前端解决客户端不安全随机数

前端项目在安全漏洞扫描的时候,爆出了客户端不安全随机数的问题,看了下代码是因为使用了 Math.random() 生成随机数造成的。百度了一下,math.random()并不是真的随机数,而是伪随机数!

Innocence_0的博客 1474

Transformer实战(2)——循环神经网络详解

循环神经网络 (Recurrent neural networks, RNN) ,RNN 是在文本输入中广泛使用的神经网络。RNN 非常灵活,已被用于解决诸如语音识别、语言建模、机器翻译、情感分析和图像字幕等问题。RNN 利用输入的序列特性,序列输入可以是文本、语音、时间序列以及任何其他元素的出现取决于其前面元素的序列。在本节中,我们介绍了 RNN 及其变体,并学习如何使用 TensorFlow 进行实现。

盼小辉丶的博客 1万+

获取0-1的加密的随机数

window.crypto.getRandomValues(new Uint8Array(1))[0]/256

weixin_42349568的博客 681

MIPI C-PHY介绍(Specification for C-PHY V1.2)

本文档描述了一个名为C-PHY的高速串行接口,它在带宽有限(bandwidth limited channels,看的有人说C的含义就是channel limit)的通道上提供高吞吐量性能,用于连接到外设,包括显示器和摄像头。首先0x4fff在0x4000~0x4fff区域,则f=(0,0,0,0,0,0,1),顺序是S6~S1;最后,端到端的传输过程是什么样呢,如下图所示,16bit先转换成7个符号(每个符号3位,共21位),然后并行数据转换成串行数据,输送到符号编码器和3个线的驱动器,接收端流程相反。

qflook的博客 5884

【Bug已解决】Codex CLI 运行时出现 command not found: codex 解决方案

方案适用场景推荐指数修复 PATH 配置最常见的基础排查方向⭐⭐⭐⭐⭐检查原生二进制完整性PATH 正常但执行仍然异常⭐⭐⭐⭐统一包管理器混用多种包管理器导致混乱⭐⭐⭐⭐确认安装脚本未被跳过CI/CD 或企业策略环境⭐⭐⭐⭐排查网络下载渠道企业内网/受限网络环境⭐⭐⭐需要留意 warning 中是否涉及脚本执行失败、网络超时重试等信息,这类 warning 往往是后续问题的前兆,建议出现明显的下载/网络相关警告时就主动重新安装一次确认。Codex CLI 报。

一键难忘的博客 1万+

19 个实用的 ES6 代码片段,解决常见的 JavaScript 问题 (译)

本文译者为 360 奇舞团前端开发工程师原文标题:19 Practical ES6 Snippets to Solve Common JS Problems ????????原文作者:Madza原文地址:https://dev.to/madza/19-practical-es6-snippets-to-solve-common-js-problems-31o9在我们的开发流程中,我们经常会遇到一些具有挑战性...

奇舞周刊 390

SKILL 是什么?怎么做?五分钟 带你从入门到精通

skill-creator 是 Anthropic 官方开源的“元技能”——一个专门用来创建 Skill 的 Skill。你只需要用自然语言描述想要什么功能,它会自动生成。从更宏观的视角看,Skills 的出现标志着 AI 编程的一次范式转变。在传统的 AI 编程中,代码是确定性的:1 是 1,2 是 2。但到了大模型时代,代码变得不确定——你不知道模型会输出什么,不知道它会不会突然删掉几行代码。这种不确定性让很多开发者感到不安。Skills 把这套逻辑又拉了回来。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 643

19 个实用的 ES6 代码片段,解决常见的 JavaScript 问题

在我们的开发流程中,我们经常会遇到一些具有挑战性的问题,而解决这些问题可能只需要几行代码。在本文中,我试图整理出一些有用的代码片段,帮助您在处理 URL、DOM、事件、日期、用户偏好等方面时更加便捷。所有这些代码片段都是从"30 seconds of code"中精心挑选的。这是一个很棒的资源,我强烈推荐去查看更多内容。这些代码片段被筛选的主要标准是实用性。希望您能找到一些有价值的东西,可以应用到...

web全栈开发的博客 276

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

19 个解决常见 JavaScript 问题的实用 ES6 代码段

英文 | https://javascript.plainenglish.io/19-practical-es6-snippets-to-solve-common-javascript-problems-3ffc4afa9255在我们的开发人员工作流程中,我们经常遇到可能只需要几行代码即可解决的具有挑战性的问题。在本文中,我尝试编写一些有用的代码片段,这些代码片段可以在处理 URL、DOM、事件、...

web前端开发 189

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

提升JS编程效率:19个实用JS代码示例

在这篇文章中,我们列举了一些精心挑选的代码片段来解决开发过程中的常见挑战。这些代码片段涵盖了处理URL、DOM操作、事件处理、日期处理和用户偏好设置等多个方面,旨在提供简洁而高效的解决方案。

南城 180

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

19个解决常见JavaScript问题的实用ES6代码段

在我们的开发人员工作流程中,我们经常遇到可能只需要几行代码即可解决的具有挑战性的问题。在本文中,我尝试编写一些有用的代码片段,这些代码片段可以在处理 URL、DOM、事件、日期、用户偏好等时为你提供帮助。所有的片段都是我从 30 秒的代码(https://www.30secondsofcode.org/js/p/1)中精心挑选出来的,这是一个很棒的资源网站,我强烈建议你去看看学习更多的东西。整理学习这些的主要标准就是它的实用性,希望你能从中找到一些有价值的东西,可以应用到你未来的代码库中。

qq_44967680的博客 162

前端过去当前日期_混子前端24个解决工作问题的ES6代码片段

这篇文章基于实际使用场景总结了24个ES6代码片段,可用来解决项目中遇到的一系列问题1、如何隐藏所有指定元素?2、如何确认元素是否具有指定的类?3、如何切换元素的类?4、如何获取当前页面的滚动位置?5、如何评价滚动到页面顶部?6、如何确认父元素是否包含子元素?7、如何确认指定元素是否在视口可见?8、如何获取一个元素内的所有图像?9、如何分辨设备是移动设备还是桌面设备?10、如何获取当前 URL?1...

weixin_42356958的博客 177

运行JavaScript代码片段的19种工具

前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS Code,前几年还使用过 Atom,偶尔我们会遇到临时需要快速分享给同事或者朋友一段代码的场景,那么在线的 JavaScript 运行环境的重要性就体现出来了。 为了解决这样的问题,业界涌现出了很多很优秀的在线编辑器。比如 JS Bin、JS Fiddle、Code Pen、Code Sandbox 等,接触前端这些年也陆陆续续发现了一些不错的其他选择,再看下浏.

CRMEB小程序商城的博客 7927

实用的 ES6 代码片段

在我们的开发流程中,我们经常会遇到一些具有挑战性的问题,而解决这些问题可能只需要几行代码。在本文中,我试图整理出一些有用的代码片段,帮助您在处理 URL、DOM、事件、日期、用户偏好等方面时更加便捷。所有这些代码片段都是从"30 seconds of code"中精心挑选的。这是一个很棒的资源,我强烈推荐去查看更多内容。这些代码片段被筛选的主要标准是实用性。希望您能找到一些有价值的东西,可以应用到未来的代码库中。

热爱可抵岁月漫长 131

JavaScript 实用代码片段集合

这篇文章总结了20个实用的JavaScript代码片段,主要涵盖URL处理、DOM操作、浏览器API、工具函数、日期时间和表单处理等功能。其中包括获取URL基础路径、检查绝对路径、URL参数转换、元素包含检测、平滑滚动、全屏切换、UUID生成、日期验证、大写锁定检测等常用操作。这些代码片段简洁高效,适合前端开发者在日常工作中快速使用,能够提升开发效率和代码质量。

油墨香^-^的博客 532

ES6代码段

ES6代码在实际场景中的应用1、隐藏所有指定元素2、确认元素是否具有指定的类3、切换元素的类4、获取当前页面的滚动位置5、平滑滚动到页面顶部6、 确认父元素是否包含子元素7、确认指定元素是否在视口可见8、获取一个元素内的所有图像9、将一个字符串复制到剪贴板10、页面的浏览器选项卡是否处于前台活跃状态11、创建一个不存在的目录12、为指定选择器创建具有指定范围、步长和持续时间的计时器13、对传递的 URL 进行 POST 请求14、获取两个日期之间的天数间隔15、获得给定毫秒数的可读格式16、移除一个元素的事

QYDUAN的博客 368

19个解决常见JavaScript问题的代码片段分享

武汉优联前端科技有限公司由一批从事前端10余年的专业人才创办,是一家致力于H5前端技术研究的科技创新型公司,为合作伙伴提供专业高效的前端解决方案,合作伙伴遍布中国及东南亚地区,行业涵盖广告,教育, 医疗,餐饮等。有效的解决了合作伙伴的前端技术难题,节约了成本,实现合作共赢。承接Web前端,微信小程序,2D/3D游戏,动画交互与UI设计等各种技术研发。

ufrontend的博客 617

8 大网盘直链下载一次搞定:免费开源油猴脚本 LinkSwift 完整上手指南

LinkSwift(网盘直链下载助手)是一个免费开源、跑在浏览器里的油猴脚本(装在浏览器上、只在指定网页生效的一小段增强代码)。你在网盘网页上勾选文件,它就把百度网盘、阿里云盘、中国移动云盘、天翼云盘、迅雷云盘、夸克网盘、UC 网盘、123 云盘这 8 家网盘的文件解析成直链(文件真实下载地址),之后浏览器或任何下载工具都能直接拿来用。 ## 为什么少装几个客户端:网盘直链下载助手解决的麻烦

gitblog_00529的博客 708

20个不容错过的ES6技巧

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群前言大家好,我是 xieyezi,好久不见,我又重新回归掘金啦, 这次为大家整理了20个使用频率很高的ES6代码块,希望大家喜欢????文中代码对应的详细注释和具体使用方法都放在我的 github 上,源代码在底部连接1. 打乱数组顺序code1.png2. 去除数字之外的所有...

程序员成长指北 125

ES7-Es8 js代码片段

es7-es8的新特性可参考:es7-es8 1 function noRun(){ 2 // es6的Generator函数异步 3 function* a(){ 4 yield console.log(1) 5 yield console.log(2) 6 } 7 var...

aiqingshi1298的博客 214
上一篇: 图解实例讲解JavaScript算法,让你彻底搞懂
下一篇: 盘点:CSS响应式布局的5种实现方式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值