
js笔记
@codeDo
低空产品研发
展开
-
【XXXX】wget下载资源-跨服务器下载
因为客户那边上传文件比较慢,所以需要通过wget下载文件,下载文件速度还是很快的。方案如下:1. 在我们公司服务器上,先通过express服务,起一个静态资源服务,供客户那边服务上下载资源,操作如下:...原创 2021-03-09 18:24:04 · 624 阅读 · 0 评论 -
Vue 封装浏览器全屏与退出全屏的方法
/**网页全屏*/function requestFullScreen(element) { var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen; if (requestMethod) { requestMethod.call(element); } .原创 2021-02-23 10:39:25 · 483 阅读 · 0 评论 -
后端返回blob文件流,前端下载文件的整个过程,偏向于前端这边(vue+axios)
先谈谈遇到的问题吧:1. 后端接口返回的blob文件流,你下载下来的文件是乱码的?解决办法 :让你的后端设置流的编码为utf-8。请跟后端大佬说,一定要给blob格式的文件流。2. 后端返回的blob文件流,并且已经设置了utf-8,但是你接受的接口返回值,依然是乱码?解决办法: 肯定没有设置 responseType: "blob",我不知道你用的什么接口请求方式,你可以搜一下,怎么设置responseType: "blob"3. 下载word文件里面内容是【object object原创 2020-07-27 10:56:27 · 15154 阅读 · 6 评论 -
前端捕获异常,在页面提示
请求接口返回的错误信息是这样的:Error: Request failed with status code 504 at createError (createError.js?16d0:16) at settle (settle.js?db52:18) at XMLHttpRequest.handleLoad (xhr.js?ec6c:77)可以通过err.r...原创 2020-04-15 13:03:04 · 1514 阅读 · 0 评论 -
window.scroll({ behavior: 'smooth' }) 在移动端不生效的问题解决
首先,遇到问题,一般百度解决不了。如果你是百度搜到我的那你真是幸运,反正我百度没搜到解决方法,最后还得靠goole。先直接上解决方案:// 安装这个插件yarn add smoothscroll-polyfill 或者 npm i smoothscroll-polyfill在你需要解决问题的页面引入:import smoothscroll from 'smoothscroll-p...原创 2020-04-10 21:13:31 · 3931 阅读 · 2 评论 -
javascript中形参和实参的区别?
对于形参和实参的区别,这里做一下解释。参数有形参(parameter)和实参(argument)的区别,形参相当于函数中定义的变量,实参是在运行时的函数调用时传入的参数。例如:声明函数add时,a,b就是形参。调用函数add(1,2) 1,2就是实参。function add(a,b) { return a + b};add(1,2);...原创 2020-04-06 22:48:33 · 483 阅读 · 0 评论 -
学习node服务器知识记录学习
跟着视频教程来一步一步走1. 新建个index.js。进入文件所在目录,运行node index.jslet http = require('http'); http.createServer((req, res) => { res.statusCode = 200; res.writeHead(200, {'Content-Type': 'text/html; char...原创 2020-01-09 17:32:54 · 130 阅读 · 0 评论 -
linux 环境上安装node记录学习笔记
# wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz // 下载# tar xf node-v10.9.0-linux-x64.tar.xz // 解压# cd node-v10.9.0-linux-x64/ // 进入解压目录# ./bin/node -v // 执行node命令 查看版本# mvno...原创 2020-01-09 14:29:35 · 243 阅读 · 0 评论 -
JS 计算日期加 n 天
//create the datevar myDate = new Date();//add a day to the datemyDate.setDate(myDate.getDate() + 1);//add a weekmyDate.setDate(myDate.getDate() + 7);//add a monthmyDate.setYear(myDate.getMont...原创 2019-12-30 13:55:02 · 961 阅读 · 0 评论 -
Cannot read property 'dispatch' of undefined
1. 子组件内,调用mapActions报错解决方法:引入 import store from '../../store';调用actions的方法:store.dispatch('checkSatId', params).then(res => { if (!res.data) { this.errors = '新增卫星ID不能...原创 2019-12-25 18:23:54 · 7110 阅读 · 0 评论 -
安装运行electron-quick-start报错
安装官网的教程,安装报错,是因为npm下载的包有问题,安装cnpm ,再执行cnpm i 就可以了。原创 2019-12-11 18:08:39 · 1492 阅读 · 1 评论 -
vue父子组件加载顺序
父子组件的执行顺序为,父组件beforeCreated ->父组件created ->父组件beforeMounted ->子组件beforeCreated ->子组件created ->子组件beforeMounted ->子组件mounted -> 父组件mounted...原创 2019-12-11 15:02:34 · 1135 阅读 · 0 评论 -
拒绝响应式网站开发的原因
原创 2019-12-06 13:00:07 · 178 阅读 · 0 评论 -
前端性能优化----无损压缩webp格式的图片
一、什么是webpWebP格式,谷歌开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间。二、为什么要用webp1、减小图片加载资源的大小、节省用户流量资源2、降低服务器流量资源三、webp兼容性情况结果:谷歌全面支持、安卓浏览器从4.2开始支持。那么在页面中对于安卓用户中图片资源加载大小会有大幅度下降。...原创 2019-12-06 12:56:24 · 2397 阅读 · 0 评论 -
为什么要把js放在页面底部,css放在顶部
先了解一下 浏览器的渲染原理:当我们在浏览器输入URL 时,浏览器会返回我们一个HTML文档,将文档下载下来后,便开始从上到下开始解析。解析完成之后就会生成DOM。如果页面中有css,会根据css的内容生成cssom, 然后DOM会和cssom结合生成一个渲染树,最后浏览器会根据渲染树的内容,计算出各个节点的大小和位置绘制在页面上。js 会阻碍浏览器的解析,解析遇到js会停止渲染,优先...原创 2019-12-06 11:21:17 · 3085 阅读 · 1 评论 -
解决pako.js解压过长(大)数据时报错的问题
function unzip(b64Data){ var strData = atob(b64Data); // Convert binary string to character-number array var charData = strData.split('').map(function(x){return x.charCodeAt(0);}); // Turn...原创 2019-11-25 11:03:28 · 2832 阅读 · 0 评论 -
WebRTC getUserMedia()获取流失败的原因查询及解决
原因及解决方法:Chrome 47以后,getUserMedia API只能允许来自“安全可信”的客户端的视频音频请求,如HTTPS和本地的Localhost。 例如:https://192.168.1.2:8080…localhost是唯一不用https的域名。因此,解决这个问题一个方法是让自己的Web支持HTTPS,还有一个方法使用旧版本的Chrome。如Chrome 46等。...原创 2019-11-25 11:02:27 · 1845 阅读 · 0 评论 -
冻结数据的方法,防止被修改Object.freeze()
Object.freeze()方法接收一个参数,如果此参数是一个对象,则此方法把这个对象冻结,如果是其他类型则不会报错,无影响。被冻结的对象不能修改、添加、删除其属性或者属性值let obj = {"a":5};Object.freeze(obj); //return 此objobj.a = 3; //不会报错console.log(obj); //仍然是 {"a":...原创 2019-11-21 16:06:52 · 1211 阅读 · 0 评论 -
一道面试题window.setTimeout(() => { test1() }, 0); test2(); test1和2 谁先执行,考察js的异步机制和事件循环基础
答案: test2()先执行,然后再执行test1()。原因:JS是单线程的,(PS: 虽然html5中提出了新的web标准,允许javascript 脚本创建多个线程,但子线程完全受主线程控制,且不得进行Dom操作,因此也并没有改变单线程的本质。)setTimeout属于异步操作,JS引擎会把setTimeout的操作加入到JS的任务队列中去,test2()属于主线程上的同步操作,优先执...原创 2019-01-10 14:34:01 · 504 阅读 · 0 评论 -
原生JS总结-- JS 绑定点击事件
第一种:addEventListener:let tn = document.getElementById('btn');tn.addEventListener('click', function(e) { e.stopPropagation();//取消事件冒泡 })如果父元素 也有点击事件,这个会触发父元素的点击事件,需要阻止一下。第二种:onclick l...原创 2019-05-27 16:20:28 · 20156 阅读 · 0 评论 -
多维数组去重、排序
function f (arr) { // 去除 嵌套 if (Object.prototype.toString.call(arr) !='[object Array]') {//判断是否为数组 return; } var newarr = []; function fn (arr) { for (var i = 0;...原创 2019-05-23 12:54:52 · 1306 阅读 · 0 评论 -
排序算法之 快速排序
快速排序:思路分析:取中间值,分左右两个数组,左边放比取的中间值小的,右边放取的比中间值大的。递归调用left和right,然后concat函数拼接。涉及小知识:1.concat 连接数组,方法内接受一个或者多个值,不会改变原始数组,返回一个副本。2. Math.floor()向下取整。function quickSort(arr) { if (arr.length ...原创 2019-05-23 17:30:39 · 210 阅读 · 0 评论 -
后端返回需要下载文件的URL 的地址,点击按钮,循环下载下来
需求:点击按钮下载全部的附件条件: 点击下载按钮调后端接口,返回一个URL ,数组。前端JS: 循环遍历这个数组,自动下载贴代码: downUrlList(url) { // 循环返回的URL数组多文件下载方法 var eleLink = document.createElement('a'); eleLink.style.displa...原创 2019-06-13 15:38:32 · 9020 阅读 · 7 评论 -
JS基础深拷贝与浅拷贝
<script> // 不拷贝的情况,只是赋值,改变obj2 obj1 也会跟着变化,这两个对象指向同一个地址 var obj1 = {name:'圆', radius:10, point:{x:0,y:0}}; var obj2 = obj1; obj2.aa = 'fang'; console.log(obj1); // obj1也会增加aa // 浅拷...原创 2019-06-19 18:04:06 · 126 阅读 · 0 评论 -
微信浏览器input关闭键盘后导致页面底部空缺问题解决方案
转自:https://blog.youkuaiyun.com/qq_40028324/article/details/85333956 感谢 <input type="text" class="inputValue" v-model="teamCodeValue" @blur="in...转载 2019-07-03 15:02:53 · 290 阅读 · 0 评论 -
addEventListener 的event事件列表
addEventListener event事件参数document.getElementById("myBtn").addEventListener("click", function(){ document.getElementById("demo").innerHTML = "Hello World";});定义和用法addEventListener() 方法...转载 2019-07-29 16:52:45 · 15644 阅读 · 0 评论 -
vue + flexible 的使用方案
1. npm install lib-flexible --save 安装 lib-flexible的依赖。在入口文件的main.js 引入。 import 'lib-flexible'2. npm install px2rem-loader --save-dev 安装px2rem-loader,用来把px转化为rem。在build文件夹下的utils.js的文件中添加以下代码...原创 2019-07-25 12:38:16 · 6813 阅读 · 5 评论 -
关于e.preventDefault() 和 e. stopPropagation() 和 return false的区别
event.stopPropagation()方法:当前的事件执行,但是不会向上冒泡。event.preventDefault()方法:当前事件不执行,会向上冒泡到父级元素。return fasle : 相当于同时执行这两个方法,跳出事件。...原创 2019-08-14 10:15:52 · 697 阅读 · 0 评论 -
移动端 监听点击事件失效的解决方案及其原因
1. 原因: 因为IOS浏览器的window、document、body并不接受click事件,按钮和链接才接受click事件。解决办法:1.如果只是移动端:可以换成监听touchstart 方法.例如: document.addEventListener('touchstart', (e) => { e.preventDefault(); ...原创 2019-08-14 10:25:04 · 6383 阅读 · 0 评论 -
动态引入的组件,用swiper库,出现的bug 解决 滑动不翻页的bug
原因:swiper初始化一次,如果追加了之后,但是初始化时记载了总共有多少个slide;解决方法;每次追加后,重新初始化swiper配置一下这两参数即可解决。感谢:https://blog.youkuaiyun.com/Xiao_peng117/article/details/85240403...原创 2019-08-07 17:49:39 · 423 阅读 · 0 评论 -
关于js的形参和实参的区别以及一些概念和 赋值等问题
形参:定义函数时候的参数,用来接受调用的时候传过来的实际参数 。实参:在调用函数时,传给函数的值。function func(a,b) { console.log(a, b);}func(1,2);// a,b 就是形参, 1,2 就是实参一直很疑惑的是,改变形参的值,是否能够影响实参。先出结论:如果是单纯的值传递: 形参的赋值,不会影响到实参。但是,如...原创 2019-08-16 10:04:35 · 2136 阅读 · 0 评论 -
前端接收后端接口返回的gzip格式的二进制流数据转换成json格式
后端写法:/*** 使用gzip进行压缩*/public static String compress(String primStr) { if (primStr == null || primStr.length() == 0) { return primStr; } ByteArrayOutputStream out = new Byte...原创 2019-10-08 09:17:25 · 3870 阅读 · 0 评论 -
理解ES6 class的用法
// 之前要抽象一个公共类的写法function Student(name) { this.name = name;}Student.prototype.hello = function () { alert('Hello, ' + this.name + '!');}// class的写法 写一个公共类class Student { constru...原创 2019-05-21 15:24:56 · 499 阅读 · 0 评论 -
h5 的replaceState 兼容到低版本IE浏览器
首先感谢大佬:https://github.com/devote/HTML5-History-API从 GitHub上下载下来 history.js ,或者 压缩版本的min.js ,建议压缩版本,体积小。放到路径引入一下:<script type="text/javascript" src="./history.js"></script>引入成功这个js ,就...原创 2019-05-20 16:55:00 · 1466 阅读 · 0 评论 -
初识node之 fs 模块基本用法
fs 模块 可以读取、写入、查看信息原创 2019-05-06 18:28:42 · 465 阅读 · 0 评论 -
ES6支持的浏览器
一、桌面端浏览器对ES2015的支持情况Chrome:51 版起便可以支持 97% 的 ES6 新特性。 Firefox:53 版起便可以支持 97% 的 ES6 新特性。 Safari:10 版起便可以支持 99% 的 ES6 新特性。 IE:Edge 15可以支持 96% 的 ES6 新特性。Edge 14 可以支持 93% 的 ES6 新特性。(IE7~11 基本不支持 ES6)w...转载 2019-02-20 13:53:35 · 7919 阅读 · 0 评论 -
async/await的学习
最近比较闲 ,赶紧学学ES6的知识,ES9都出来了,ES6还用不熟练怎么行。async 和await 必须配对使用,Async 写在一个函数前面,表示这个函数总是会 返回一个promise,await 只能在async函数的内部使用,表示只有当promise返回一个结果,才会使JavaScript继续往下执行,否则就停下来等待。这是ES7的语法 我的天~~...原创 2019-02-20 13:52:23 · 201 阅读 · 0 评论 -
移动端在线打开PDF预览下载、告诉你微信、QQ内置浏览器,用pdf.js能做到哪一步。
首先说Ios系统,因为苹果的系统限制,应用与下载是隔离,下载是不可能了,在线预览,自带的属性,用<a href="要访问的PDF的路径"> ,这样就可以直接打开。然后安卓机,像上面这么写,默认会是下载。不会打开预览。要想打开预览,并可以下载。需要下载PDF.js 插件,教程这里就不说了,很简单。无非是下载下来压缩包,解压,把路径配置配置,如果不行,看浏览器报错,报错一般都是404,...原创 2019-02-22 18:42:10 · 11577 阅读 · 6 评论 -
什么是变量提升?什么是函数提升?
在js中只有两种作用域,全局作用域和函数作用域,在ES6之前,js是没有块级作用域。JavaScript 代码的执行分为两个阶段。第一个阶段在当前词法环境中注册所有的变量和函数声明,简单说就是,解析,解析完成之后,第二个阶段的 JavaScript 执行就开始了!JS中创建函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提升。JavaScript 仅提升声明,而不...原创 2019-01-09 16:08:09 · 21686 阅读 · 2 评论 -
什么是闭包?有哪些使用场景?优缺点是什么?
一:什么是闭包?闭包就是能够读取其他函数内部变量的函数,说白了闭包就是个函数,只不过是处于其他函数内部而已。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数“。所以,在本质上,闭包是将函数内部和函数外部连接起来的桥梁。知乎大神说:闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的...原创 2019-01-08 18:19:55 · 19691 阅读 · 4 评论