
JavaScript
文章平均质量分 52
javascript
PrinciplesMan
一个人的生命是应该这样度过的:当他回首往事的时候,不因虚度年华而悔恨,也不因碌碌无为而羞耻。
展开
-
js编码解码decodeURI()与decodeURIComponent()的区别
对URI的特殊字符是没有编码和解码能力的,实际项目中我们一般需要get请求的方式在地址栏中拼接一些参数,但是参数中如果出现#,/,&这些字符,就必须要用。假如我们要传一个code字段到http://www.xxx.com,值为20180711#abc。这时候我们拿到的code参数明显是错误的,被特殊字符#截断了,下面我们来看用。可以编码和解码URI特殊字符(如#,/,¥等),而。http://www.xxx.com接收参数。http://www.xxx.com接收参数。() 函数编码的 URI 进行解码。转载 2023-07-28 08:57:43 · 786 阅读 · 0 评论 -
js 把base64转file文件
/将base64转换为blob。//将blob转换为file。原创 2023-04-21 17:56:44 · 946 阅读 · 0 评论 -
javascript rsa 加密,实现RSA_PKCS1_PADDING 加密
【代码】javascript rsa 加密,实现RSA_PKCS1_PADDING 加密。转载 2023-02-24 13:44:58 · 2284 阅读 · 0 评论 -
mousedown mousemove mouseup 与 click事件冲突的解决办法
pointer-events属性可以阻止设置了该样式的容器的鼠标事件的触发,也就是说设置了该属性,这个容器就无法点击了,并且这个容器内部的任何点击行为都无法触发,但是如果容器内部的元素也设置了该属性的其他值,则可以继续触发。利用该属性,可以达到组织事件穿透的效果。不该在 mousedown 中设置该属性,否则按钮的click事件就无法执行了,就像前面说的,click事件的执行需要mousedown + mouseup,毕竟拖动事件和容器内部的点击事件都是要先进行mousedown才能继续往下走的。转载 2022-09-13 10:20:22 · 5471 阅读 · 0 评论 -
js中splice()详解(插入、删除或替换数组的元素)
向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)处理数组的方法很多,javascript的splice()算是最强大的了,它可以用于插入、删除或替换数组的元素。...转载 2022-07-29 08:46:34 · 5812 阅读 · 0 评论 -
浅谈JavaScript宏任务和微任务执行顺序
JavaScript是单线程指的是同一时间只能干一件事情,只有前面的事情执行完,才能执行后面的事情。导致遇到耗时的任务时后面的代码无法执行。在此之前啊 我们必须了解同步和异步 12345 顾名思义 得到的一定是 顺序执行 1234按普通的执行顺序来说 定时器在上面 应该先输出定时器 在输出 奥特曼 最后拿到的结果却先输出奥特曼 在输出了定时器 原因呢就是 setTimeout是异步任务 补充一个知识点 setTimeout的定时器 不管延迟多少毫秒 也是异步的 每个浏览器的时间也是不同的,各个浏转载 2022-06-14 19:49:35 · 4353 阅读 · 3 评论 -
微信H5适配 解决微信调整字体大小导致Html5页面混乱
最近开发公众号遇到一个问题:iOS、Android 加载页面,如果用户调整了微信自带的字体大小,那么我们的页面就会跟随调整字体大小,导致页面错乱无法适配。所以希望能够禁止微信的字体放大功能。找了一些方法总结如下:原理:阻止ios和安卓调整字体大小时候的事件,ios通过添加css属性,安卓通过微信属性去阻止。iOS系统禁止微信客户端修改字体大小:/* iOS禁止微信调整字体大小 */body { -webkit-text-size-adjust: 100% !important;..转载 2022-05-22 13:40:02 · 1250 阅读 · 0 评论 -
JavaScript 中 call()、apply()、bind() 的用法
其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解!先看明白下面:例 1obj.objAge; // 17obj.myFun() // 小张年龄 undefined例 2shows() // 盲僧 比较一下这两者 this 的差别,第一个打印里面的 this 指向 obj,第二个全局声明的 shows() 函数 this 是 window ;1,call()、apply()、bind() 都是用来重定义 this 这个对象的!如:ob转载 2022-03-09 15:22:35 · 173 阅读 · 0 评论 -
js截取数组slice(),splice()两种方法
slice()返回一个索引和另一个索引之间的数据(不改变原数组),slice(start,end)有两个参数(start必需,end选填),都是索引,返回值不包括end用法和截取字符串一样 https://blog.youkuaiyun.com/qq_43627981/article/details/99621402var heroes=["李白",'蔡文姬','韩信','赵云','甄姬','阿珂','貂蝉','妲己'];console.log(heroes.slice(1,4))// [ "蔡文姬"..转载 2021-12-30 15:43:50 · 1296 阅读 · 0 评论 -
javascript : 递归遍历数组
我们假设有一个对象数组。这个对象数组里的对象,有一个叫children的key,value也是一个对象数组。这个数组里面可能还有children...现在我们想递归遍历它。上代码。test_parse(source){ for (var key in source) { console.log(source[key]) if (source[key].children) { ..转载 2021-12-28 09:27:36 · 1243 阅读 · 0 评论 -
javascript中new url()属性,轻松解析url地址
1.首先写一个假的地址(q=URLUtils.searchParams&topic=api)相当于当前的window.location.hrefconst urlParams = new URL(window.location.href);urlParams.searchParams.has("topic") === true; // trueurlParams.searchParams.get("topic") === "api"; // trueurlParams.searchP转载 2021-12-16 21:26:43 · 7476 阅读 · 0 评论 -
js中判断对象是否为空
1.es6中可以使用Object.keys(obj)var data = {};var arr = Object.keys(data);alert(arr.length == 0); //true 为空, false 不为空2.将json对象转化为json字符串,再判断该字符串是否为"{}"var data = {};var b = (JSON.stringify(data) == "{}");alert(b); //true 为空, false 不为空...转载 2021-12-01 17:17:00 · 369 阅读 · 0 评论 -
JS中对象的深拷贝
在JS中,一般的=号传递的都是对象/数组的引用,并没有真正地拷贝一个对象,那如何进行对象的深度拷贝呢?如果你对此也有疑问,这篇文章或许能够帮助到你一、对象引用、浅层拷贝与深层拷贝的区别js的对象引用传递理解起来很简单,参考如下代码:var a = {name:'wanger'}var b = a ;a===b // trueb.name = 'zhangsan'a.name //'zhangan'上述代码中,使用了=进行赋值,于是b指向了a所指向的栈的对象,也就是a与b指向了同一转载 2021-10-24 14:46:56 · 327 阅读 · 0 评论 -
JavaScript中querySelector()和getElementById()(getXXXByXX)的区别
在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法。但是最近发现有很多地方使用的是querySelector方法而不是使用前面的方法。去官方文档查看是这么说的:文档对象模型Document引用的querySelector()方法返回文档中与指定选择器或选择器组匹配的第一个 html元素Element。如果找不到匹配项,则返回null。这句话看意思和getElementById(getXXXByXX)函数.转载 2021-10-16 10:00:39 · 963 阅读 · 0 评论 -
JavaScript中唯一ID生成器NanoID的使用
今天介绍一个小巧好用的唯一ID生成器,Github地址:https://github.com/ai/nanoid一、安装npm i nanoid二、使用import { nanoid } from 'nanoid'let idA = nanoid() //=> "V1StGXR8_Z5jdHi6B-myT"//也可以指定生成字符串的长度let idB = nanoid(5)...转载 2021-09-23 17:30:00 · 2859 阅读 · 1 评论 -
如何判断setInterval 是否正在执行?
在执行函数里加一些处理 ,比如加一个计数器之类的,通过这个变量的变化了能了解它是否还在执行。比如:(function(ifun) { ifun.exeCount = 0 setInterval(function() { ifun() ifun.exeCount++ }, 1000)})(intervalFunction)若果 计数器在按一定的时间变化,就说明在执行,如果长时间不变了,就说明没执行了哇。...原创 2021-09-15 08:56:21 · 1531 阅读 · 0 评论 -
js中判断对象是否为空的三种实现方法
在写js脚本的时候经常遇到对象为空或者不是对象的情况,出现这种情况我们可以用if去判断它,然后去执行相应的处理方法,具体判断他们的方法有以下几种:1、if (typeOf(x) == "undefined")2、if (typeOf(x) != "object")3、if(!x)其中第三种是最简单的方法,但是第三种就不能用if(x)这种互斥的方法去判断,只能在对象前面加!java里面!x为true的时候x肯定为false了,但是这里是不可以的...转载 2021-09-01 16:08:15 · 502 阅读 · 0 评论 -
js字符串转base64
//字符串转base64function encode(str){// 对字符串进行编码var encode = encodeURI(str);// 对编码的字符串转化base64var base64 = btoa(encode);return base64;}// base64转字符串function decode(base64){// 对base64转编码var decode = atob(base64);// 编码转字符串var str = de转载 2021-08-27 14:12:20 · 10958 阅读 · 0 评论 -
js判断当前环境是否是微信内浏览器
function is_weixin(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger") {return true;} else {return false;}}转载 2021-08-16 18:28:47 · 664 阅读 · 0 评论 -
什么是xhr?
1、概念 xhr,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象,jquery中的ajax就是对 xhr的封装。2、xhr XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步地返回 Web 服务器的响应,并且能够以文本或者一个 DOM 文档的形式返回内容。 xhr 接口强制要...转载 2021-08-03 09:21:09 · 2383 阅读 · 0 评论 -
JQ锚点定位
使用Jq进行锚点定位 <script> $(document).ready(function(){ $('html, body').animate({scrollTop: $('.listbox1').offset().top}, 300) }); </script>转载 2021-08-03 07:33:39 · 1019 阅读 · 0 评论 -
前后端联调之Form Data与Request Payload,你真的了解吗?
前言做过前后端联调的小伙伴,可能有时会遇到一些问题。例如,我明明传递数据给后端了,后端为什么说没收到呢?这时候可能就会就会有小伙伴陷入迷茫,本文从chrome-dev-tools(F12调试器)中看到的FormData与RequestBody,给小伙伴们提供一种可能的思路。也给小伙伴们提供一些问题的探究方法。简介什么是FormData?什么是RequestPayload?不解释,直接上图:区别?因为这里触及了我的知识盲区,所以有了本文。这个答案是我在stackoverflow上得转载 2021-07-30 18:15:25 · 1271 阅读 · 0 评论 -
彻底明白 JS 线程
很多文章在介绍线程以及线程之间的关系,都存在着脱节的现象。还有的文章过于广大,涉及到了内核,本文希望以通俗易懂的话去描述晦涩的词语,可能会和实际有一丢丢的出入,但是更易理解。我们都知道JS是单线程的,即js的代码只能在一个线程上运行,也就说,js同时只能执行一个js任务,但是为什么要这样呢?这与浏览器的用途有关,JS的主要用途是与用户互动和操作DOM。设想一段JS代码,分发到两个并行互不相关的线程上运行,一个线程在DOM上添加内容,另一个线程在删除DOM,那么会发生什么?以哪个为准?所以为了避免复杂性,转载 2021-07-21 17:17:30 · 2301 阅读 · 0 评论 -
js多线程的实现
我们都知道JS是一种单线程语言,即使是一些异步的事件也是在JS的主线程上运行的(具体是怎么运行的,可以看我另一篇博客JS代码运行机制)。像setTimeout、ajax的异步请求,或者是dom元素的一些事件,都是在JS主线程执行的,这些操作并没有在浏览器中开辟新的线程去执行,而是当这些异步操作被操作时或者是被触发时才进入事件队列,然后在JS主线程中开始运行。首先说一下浏览器的线程,浏览器中主要的线程包括,UI渲染线程,JS主线程,GUI事件触发线程,http请求线程。JS作为脚本语言,它的主要用途是转载 2021-07-21 16:46:51 · 441 阅读 · 0 评论 -
js日期转换成时间戳
1、使用原生javascript的Date对象,进行格式化 (1)将日期字符串转换为Date类型的对象。let d = new Date('2018-01-01')(2)转换为时间戳。let t = d.getTime(d)// 方法1let t = d.valueOf(d)// 方法2let t = d.parse(d)// 方法32、第三方js库moment.js进行格式化(1)在html中引入moment.js,添加以下script标签:<scrip...转载 2021-07-06 16:28:23 · 11989 阅读 · 0 评论 -
js模板引擎mustache介绍及实例
Loading转载 2021-06-25 19:14:34 · 518 阅读 · 0 评论 -
节流 与防抖
节流 节流的意思是,规定时间内,只触发一次。比如我们设定500ms,在这个时间内,无论点击按钮多少次,它都只会触发一次。具体场景可以是抢购时候,由于有无数人 快速点击按钮,如果每次点击都发送请求,就会给服务器造成巨大的压力,但是我们进行节流后,就会大大减少请求的次数。 防抖 防抖的意思是,在连续的操作中,无论进行了多长时间,只有某一次的操作后在指定的时间内没有再操作,这一次才被判定有效。具体场景可以搜索框输入关键字过程中实时 请求服务器匹配搜索结果,如果不进行处理,那么就是输入框内容...原创 2021-06-19 10:18:40 · 380 阅读 · 0 评论 -
JS对象转URL查询字符串
"use strict";var objectToQueryString = function objectToQueryString(obj) { return Object.keys(obj).map(function (key) { return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(obj[key])); }).join('&');};objectToQueryString({...转载 2022-05-20 15:29:55 · 616 阅读 · 0 评论 -
为什么url encode?
汇总整理:这个问题涉及到URL的定义。我们知道URL是为了 统一的命名网络中的一个资源(URL不是单单为了HTTP协议而定义的,而是网络上的所有的协议都可以使用)。所以这就要求URL有一些基本的特性:URL是可移植的。(所有的网络协议都可以使用URL) URL的完整性。(不能丢失数据,比如URL中包含二进制数据时,如何处理) URL的可阅读性。(希望人能阅读)因为一些历史的原因URL设计者使用US-ASCII字符集表示URL。(原因比如ASCII比较简单;所有的系统都支持ASCII)为原创 2021-06-06 10:54:05 · 518 阅读 · 0 评论 -
JS数组reduce()方法详解及高级技巧
reduce()方法可以搞定的东西,for循环,或者forEach方法有时候也可以搞定,那为啥要用reduce()?这个问题,之前我也想过,要说原因还真找不到,唯一能找到的是:通往成功的道路有很多,但是总有一条路是最捷径的,亦或许reduce()逼格更高...1、语法arr.reduce(callback,[initialValue])reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值),当前元..转载 2021-05-28 17:13:52 · 417 阅读 · 0 评论 -
moment.js 使用方法总结
目录一、引入moment.js 1.Node.js方式引入(。◝‿◜。) 2.浏览器方式引入ლ(╹◡╹ლ ) 二、设定moment区域为中国 三、使用 1.获取时间~Ⴚ(●ტ●)Ⴢ~ 2.设置时间︶ε╰✿ 3.格式化时间=≡Σ((( つ•̀ω•́)つ 4.比较时间(◍'౪`◍)ノ゙ 5.转化为JavaScript原生Date对象✿◡‿◡ 6.日期格式化 ʅ(‾◡◝)ʃ 输出实例 7.相对时间 (◕ܫ◕) 输出实例 8.日历时间 (๑¯ิε ¯ิ...转载 2021-05-19 20:38:45 · 2292 阅读 · 0 评论 -
JS中的async/await的用法和理解
1、首先需要理解async 和 await的基本含义 async 是一个修饰符,async 定义的函数会默认的返回一个Promise对象resolve的值,因此对async函数可以直接进行then操作,返回的值即为then方法的传入函数// 0. async基础用法测试async function fun0() { console.log(1) return 1}fun0().then( x => { console.log(x) }) // 输出结果 ..转载 2021-05-14 15:43:46 · 1027 阅读 · 0 评论 -
canvas获取视频第一帧设置为视频封面
function vSetImg(obj) { const canvas = document.createElement("canvas"); canvas.width = obj.videoWidth; canvas.height = obj.videoHeight; canvas.getContext('2d').drawImage(obj, 0, 0, canvas.width, canvas.height); obj.setAttribute('poster', canvas.转载 2021-04-29 15:12:27 · 1212 阅读 · 0 评论 -
gojs去除logo
7eba17a4ca3b1a8346转载 2021-04-15 10:47:33 · 361 阅读 · 0 评论 -
moment通过时间戳获取星期几
moment通过时间戳获取星期几getWeek (date) { // 参数时间戳 let week = moment(date).day() switch (week) { case 1: return '周一' case 2: return '周二' case 3: return '周三' case 4: return '周四' ......转载 2021-04-15 09:02:18 · 5876 阅读 · 0 评论 -
addEventListener() 方法,事件监听
addEventListener() 方法,事件监听你可以使用 removeEventListener() 方法来移除事件的监听。语法element.addEventListener(event, function, useCapture);第一个参数是事件的类型 (如 "click" 或 "mousedown").第二个参数是事件触发后调用的函数。第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。注意:不要使用 "on" 前缀。 例如,使用 "click" ,而转载 2021-04-13 20:51:27 · 1173 阅读 · 0 评论 -
Javascript 多线程?
自己试验 不管是异步ajax请求 还是鼠标点击触发事件等 还是setTimeout等 所触发的事件都会等到js引擎执行完主体代码再去执行队列里的回调函数 setTimeout(function () { console.log('end 2'); }, 2000); setTimeout(function () { console.log('end 1'); }, 0); console.log('end');for(var i=0;i<1000...转载 2021-04-13 20:46:51 · 226 阅读 · 0 评论 -
JavaScript——promise 是解决异步问题的方法嘛
前言promise 异步解决方案步骤Promise 对象是 JavaScript 的异步操作解决方案,为异步操作提供统一接口。它起到代理作用(proxy),充当异步操作与回调函数之间的中介,使得异步操作具备同步操作的接口。Promise 可以让异步操作写起来,就像在写同步操作的流程,而不必一层层地嵌套回调函数。Promise解决了callback回调地狱的问题,async、await 是异步的终极解决方案。来看一下JavaScript中异步方案1)回调函数(callback)转载 2021-04-08 17:27:41 · 436 阅读 · 0 评论 -
Promise到底解决了什么问题?
大家都知道Promise解决了回调地狱的问题。说到回调地狱,很容易想到下面这个容易让人产生误解的图片:可回调地狱到底是什么?它到底哪里有问题?是因为嵌套不好看还是读起来不方便?首先我们要想想,嵌套到底哪里有问题?举个例子: function a() { function b() { function c() { function d() {} d(); } c(); } b(); } .转载 2021-04-08 17:24:32 · 825 阅读 · 0 评论 -
JavaScript常见鼠标事件与用法分析
本文实例讲述了JavaScript常见鼠标事件与用法。分享给大家供大家参考,具体如下:JavaScript 鼠标事件有以下8种mousedown鼠标的键钮被按下。mouseup鼠标的键钮释放弹起。click鼠标左键(或中键)被单击。事件触发顺序是:mousedown -> mouseup -> clickdblclick鼠标左键(或中键)被双击。事件触发顺序是:mousedown -> mouseup -> click -> mousedow转载 2021-04-06 16:29:46 · 699 阅读 · 0 评论