JavaScript
梦开始的地方
山楂树の
Always believe that something wonderful is about to happen.
展开
-
JS将图片转Base64的两种方法
实现原理:使用xhr请求图片,并设置返回的文件类型为Blob对象[xhr.responseType = “blob”]使用FileReader 对象接收blob。原创 2024-03-08 21:33:31 · 3619 阅读 · 0 评论 -
封装 检测JS各种数据类型是否为空值
封装 检测JS各种数据类型是否为空值原创 2023-01-13 23:46:38 · 342 阅读 · 0 评论 -
JS点击弹框以外的区域,隐藏弹框
【代码】vue点击弹框以外的区域,隐藏弹框。原创 2022-11-18 16:30:47 · 1405 阅读 · 0 评论 -
renderjs的使用
在uniapp中使用了某些前端库或iframe,需要操作这些库中的dom的时候,而uni上又没有document等基础对象。也就无法操作这些dom去实现一些交互逻辑,那么,涉及到这些的前端类库就无法使用,例如html2、canvas、image。而要用这些怎么办,这是用就出现了renderjs这种视图层工具来进行渲染。大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力原创 2023-02-28 23:35:55 · 6252 阅读 · 3 评论 -
JavaScript控制网页进入退出全屏,以及检查网页是否在全屏状态
document.fullscreenElement:判断是否全屏;不是全屏返回null,全屏返回全屏的元素element.requestFullscreen():设置dom全屏展示document.exitFullscreen() :退出全屏原创 2023-04-22 15:28:21 · 373 阅读 · 0 评论 -
JS事件循环机制,从浏览器进程模型、主线程工作模式、各种队列执行顺序等全面讲解
事件循环又叫做消息循环,是浏览器渲染主线程的工作方式。在 Chrome 的源码中,它开启一个不会结束的 for 循环,每次循环从消息队列中取出第一个任务执行,而其他线程只需要在合适的时候将任务加入到队列末尾即可。过去把消息队列简单分为宏队列和微队列,这种说法目前已无法满足复杂的浏览器环境,取而代之的是一种更加灵活多变的处理方式。根据 W3C 官方的解释,每个任务有不同的类型,同类型的任务必须在同一个队列,不同的任务可以属于不同的队列。原创 2023-04-01 23:49:23 · 1211 阅读 · 3 评论 -
JavaScript自定义map方法
1、回调函数必须是一个函数。2、调用该方法的对象必须是数组。3. 数组的map方法,其中需要传入两个参数,第一个是一个回调函数,第二个是一个回调函数的this指向的值。原创 2023-03-13 22:46:01 · 586 阅读 · 0 评论 -
iframe加载白屏闪烁解决方案
onload 事件在iframe载入完成后被触发,载入过程中隐藏,onload触发时显示,当然这个过程中可以做一些动画,在load事件中控制动画的显示隐藏即可。原创 2023-03-05 16:11:09 · 2270 阅读 · 3 评论 -
日历组件封装 —— (Vue 和 JS两种方式实现)
分三个模块,日期面板、年份面板、月份面板。所有事件,利用事件代理方式,只绑定根元素点击事件,最后触发子节点通过冒泡触发事件。公共store,用于响应数据的变化,及时去创建或更新面板。原创 2023-02-14 18:44:04 · 1464 阅读 · 0 评论 -
深拷贝的五种实现方式
浅拷贝:当把一个对象赋值给一个新的变量时,复制的其实是该对象的在栈中的引用地址(指向某个对象的指针),而不是对象值本身,新旧对象指向堆内存中同一片地址空间,共享同一块堆内存,无论哪个对象发生变化,其实都是改变的内存空间的内容,因此,两个对象是联动的。(object):存储时会在栈内存存储引用(堆内存中存值的地址),堆内存存储真正的值,栈内存中的引用指向堆内存的值。深拷贝:在堆内存中重新开辟一块空间,存放原对象的值,让栈中的引用指向这块新的内存地址,新旧对象不在相互影响。无法拷贝不可枚举的属性。原创 2023-02-07 21:49:21 · 2375 阅读 · 1 评论 -
JS 封装格式化时间函数yyyy-mm-dd
支持传入GMT格式:Wed Feb 01 2023 21:29:23 GMT+0800 (中国标准时间) 、时间戳格式。自定义传入不同的format格式类型,进行自动格式化,代码可以直接拿到项目中用,毕竟一个项目中有很多地方会用到,还是很简单的原创 2023-02-01 21:45:13 · 673 阅读 · 1 评论 -
replace()方法第二个参数为函数的情况
如果正则中只有一个匹配项,会向这个函数传递3个参数:模式的匹配项,模式的匹配项在字符串中的位置和原始字符串,函数中的第一个参数为匹配项,第二个参数为捕获组的匹配项(相当于$1),第三个参数为原字符串;如果正则中有多个匹配项(带括号分组),传递给函数的参数依次模式的匹配项,第一个捕获组的匹配项,第二个捕获组的匹配项...,但最后两个参数仍然分别是模式的匹配项在字符串中的位置和原始字符串。正则表达式匹配到几个结果就会执行几次回调,函数内arguments对象存放着匹配项,函数返回值是要改变后的值。原创 2023-02-01 17:20:18 · 653 阅读 · 0 评论 -
鼠标滚轮事件mousewheel和DOMMouseScroll
可以通过 window.navigator.userAgent 来判断当前设备及浏览器版本号。判断event.wheelDelta是否有值?有则非Firefox,无则相反~原创 2023-01-27 17:42:17 · 638 阅读 · 0 评论