关于For循环中进行异步操作索引不正确的处理方式
code 问题代码
1 | function test() { |
output 问题输出
1 | index is : 5 |
solution 使用自执行函数
1 | function test() { |
output 正确输出
1 | index is : 0 |
使用canvas实现图片压缩
原文链接 https://segmentfault.com/a/1190000009308553
那,首先通过URL.createObjectURL(file)
从file对象直接取得了图片的地址
前面就不详细说了,开始压缩咯 ( ´ ▽ ` )ノ
噢,有个注意点:
每次调用createObjectURL
的时候,一个新的URL对象就被创建了,即使是同一个file对象,也会创建一个新对URL对象,所以,为了最佳性能和内存使用,当不再需要这个对象的时候要URL.revokeObjectURL()
释放它。
开始压缩
关于mui Div模式选项卡 JS主动触发切换指定选项卡
window.requestAnimFrame 以及Polyfill
requestAnimationFrame
requestAnimationFrame是浏览器用于定时循环操作的一个接口,类似于setTimeout,主要用途是按帧对网页进行重绘。
设置这个API的目的是为了让各种网页动画效果(DOM动画、Canvas动画、SVG动画、WebGL动画)能够有一个统一的刷新机制,从而节省系统资源,提高系统性能,改善视觉效果。代码中使用这个API,就是告诉浏览器希望执行一个动画,让浏览器在下一个动画帧安排一次网页重绘。
requestAnimationFrame的优势,在于充分利用显示器的刷新机制,比较节省系统资源。显示器有固定的刷新频率(60Hz或75Hz),也就是说,每秒最多只能重绘60次或75次,requestAnimationFrame的基本思想就是与这个刷新频率保持同步,利用这个刷新频率进行页面重绘。此外,使用这个API,一旦页面不处于浏览器的当前标签,就会自动停止刷新。这就节省了CPU、GPU和电力。
不过有一点需要注意,requestAnimationFrame是在主线程上完成。这意味着,如果主线程非常繁忙,requestAnimationFrame的动画效果会大打折扣。
requestAnimationFrame使用一个回调函数作为参数。这个回调函数会在浏览器重绘之前调用。
requestID = window.requestAnimationFrame(callback);
关于Ajax跨域访问 session不能保存或之后无法访问session取值为空等问题
关于ajaxFileUpload造成 input[type=file] change事件只能触发一次的问题
现在发现的问题
通过js绑定的input[type=file]
change
事件只能触发一次
原因
该问题并不是由change事件失效造成的,而是ajaxFileUpload插件造成的,它会把原来的file元素替换成新的file元素,所以之前绑定的change事件就失效了,需要重新绑定一下
除了重新绑定以外,如果是使用$fileInput.trigger('click')
方式,失效原因是$fileInput
仍指向旧元素,替代方案分为以下两步
- 首先将ajaxFileUpload源码中
$(oldElement).clone()
(有些版本中为jQuery(oldElement).clone()
)改为$(oldElement).clone(true)
这样可以在复制元素的同时复制事件 - 将
$fileInput.trigger('click')
改为$('#id').trigger('click')
对保证新元素进行trigger而不是旧元素
如果你想要知道具体原因,请往下看
一个Mui Demo仓库
mui slider轮播组件常用API
原文:http://www.bcty365.com/content-146-5588-1.html
组件介绍
轮播组件是mui提供的一个核心组件,在该核心组件基础上,衍生出了图片轮播、可拖动式图文表格、可拖动式选项卡、左右滑动9宫格等组件。
input的disabled属性会导致无法上传
如题 很多人会用disable
禁止用户修改input
的值
但是同时会导致form
提交时不包含这个文本框的值
(disabled
本意即为禁用 所以自然不会上传)
需要实现禁止修改可以使用readonly
属性