vscode-settings.json
1 | { |
1 | { |
1 | let eventManage = (function() { |
web项目中有对渲染后的列表进行复制文字的操作,采用了clipboard.js的方案,免去了解决兼容性的烦恼,但是实际效果不符合预期,第一次点击复制无效,从第二次之后才可以复制成功
项目使用的Vue技术栈,复制操作使用了动态复制的api
1 | new ClipboardJS('.btn', { |
经过试验,是因为API调用放在了ajax的回调函数中,这样第一次创建ClipboardJS构造函数成功时,复制操作已经结束,没有复制到任何文本,由于要复制的目标文本必须要通过网络请求动态获取,可以采取hack方案,借助mouseenter
实现,当鼠标移入的时候执行一次,在接下来的点击事件中就可以正常复制。
额外的处理就是区分事件调用者为鼠标移入事件还是点击事件,鼠标移入事件只简单的创建构造函数,屏蔽额外的业务逻辑,真正的逻辑放在点击事件中处理,保证mouseenter
只执行一次即可
附基础代码:
1 | // html |
最近看了一些关于HTTP headers的知识,平时与服务端联调接口,查看headers必不可少。
headers(请求头)允许客户端和服务器通过 request和 response传递附加信息。一个请求头由名称(不区分大小写)后跟一个冒号“:”,冒号后跟具体的值(不带换行符)组成。该值前面的引导空白会被忽略。
公司为了精准的了解自己产品的用户使用情况,通常会对用户数据进行统计分析,获取pv、uv、页面留存率、访问设备等信息。与之相关的就是客户端的数据采集,然后上报的服务端。为了保证数据的准确性,就需要保证数据上报不会有差错。
数据发回服务器的常见做法是,将收集好的用户数据,放在unload事件里面,用 AJAX 请求发回服务器。但是这种方法有个弊端,因为AJAX通常应用的场景是异步发送请求,在 unload 事件中,使用 XHR 异步发送数据。这种做法有可能导致服务端未收到数据,浏览器就已经断开连接,数据就会丢失。虽然AJAX支持同步请求,但这种做法会阻塞页面的跳转,影响用户体验。