JS 14
-
16 2022年08月
记一次JS 事件冒泡处理
背景:产品针对新功能提出了一个Radio嵌套Select的交互,实现过程中遇到一点小问题大致效果如下:代码也比较简单:<RadioGroup> <Radio> <Select> <Option v-for="valu
-
07 2022年07月
JS判断页面当前焦点
最近在整理补充之前项目的技术文档,回顾的过程中发现了一些小的知识点,顾记录下,以便后续查阅const focusElement = document.activeElement;通过上面上面的代码就可以获取到页面当前的焦点元素,焦点元素也可能是<select>元素 (menu) 或者一个
-
02 2022年06月
记一次canvas导出图片问题
背景:之前在系统中做了一个将dom导出图片的功能https://yukinoyukino.com/archives/dom导出为图片,本以为解决了跨域问题,但结果从灰度上到正式环境之后还是存在这个问题一、问题出现问题出现在这一行代码:const image = canvas.toDataURL('i
-
12 2022年05月
JS 剪切板 Clipboard API
背景: 最近遇到一个需求,需要展示一个键值的列表,并能点击复制按钮将Key值复制到系统的剪切板中(这个需求好像还挺常见的)一、简介Clipboard API提供系统剪切板的功能,其暴露于全局属性navigator.clipboard中,其包含write、read、writeText和readText
-
08 2022年04月
-
29 2021年12月
JavaScript 浏览器中的Event
一、Event对象type:发生事件的类型,JS支持的事件类型非常多,大致可以分为以下几类:设备无关输入事件:这类事件和特定输入设备相关;例如mousemove、keydown、touchmove等;设备相关输入事件:这类事件并不与特定输入设备相关,它可以由多种设备触发;例如:click既可以由鼠标
-
29 2021年12月
-
29 2021年12月
Chrome和Firefox的<input type=“file”/>的差异
背景:文件上传在选择文件后重新选择文件,然后取消会出现页面卡死的情况,且只在Chrome中出现,觉得应该是浏览器在某些地方处理不一样,后来排查到是input标签的问题,故记录一下。一、差异介绍Input标签type为file时,点击会弹出一个文件选择框,若选中文件后再次点击选择,然后点击取消,在Fi
-
29 2021年12月
空输入框表单(FormData)提交后变为”null”字符串
记录一次bug排查一、场景一个空的输入框在保存之后并无异常,再次编辑空白保存之后,其中的内容变为了null。二、排查过程 首先找到这个”null”是什么时候产生的,所以先查看了get到的数据,显示是desc: null,这是没问题的,表单显示也是正常的,没有任何内容,但当再次点击保存时,再获取
-
29 2021年12月
JS的__proto__、prototype和[[prototype]]
序(碎碎念):本文是在整理《你不知道的JS(上)》第五章时写下的,先是把整本书过了一遍,其中有些细节并未深究,待整理时再看一遍,前面几章都顺利的写出来了,一天整理一章(其中跳过了第4章,究其原因我目前没觉得混入有什么使用场景),并没有遇到什么大问题,但在整理这一章的时候,我发现书中的信息似乎并不清楚
-
29 2021年12月
《你不知道的JS》读书笔记——对象
一、创建对象语法声明(文字)模式var myObj = {key: value,...};构造模式var myObj = new Object();myObj.key = value;构造模式和文字声明生成的对象是一样的,唯一的区别是,文字声明可以添加多个键值对,构造模式只能逐一添加。二、 类型主要
-
29 2021年12月
《你不知道的JS》读书笔记——this
一、默认绑定function foo() { console.log(this.a);}var a = 2;foo(); // 2这里调用foo函数打印的a就是全局作用域中定义的a,这就是第一种情况,this的默认绑定,绑定的对象是全局对象。在严格模式下,默认绑定的是undefined二、隐式
-
29 2021年12月
《你不知道的JS》读书笔记——作用域和闭包
JS是一门编译语言,但其不像传统编译语言一样,不会提前编译,编译结果也不能在分布式中进行移植。JS的编译大部分情况下发生在代码执行前的几微秒。传统编译过程:词法分析->语法分析->代码生成。LHS和RHS查询:LHS查询是查找变量本身,RHS查询是查找变量的值。词法作用域:定义在词法分析
-
29 2021年12月
Javascript中的.map(), .reduce 和 .filter()
.map()用法let officers = [ { id: 20, name: 'Captain Piett' }, { id: 24, name: 'General Veers' }, { id: 56, name: 'Admiral Ozzel' }, { id: 88, name: