H5新增API
来源:互联网 发布:淘宝一个月还能退货吗 编辑:程序博客网 时间:2024/05/19 14:54
file 文件(上传)
步骤:
获取(file的)input 标签:
var input=document.querySelector(” # file ” )
监听 onchange 事件:
input . onchange = function ( ) { console.log ( this . files ) }
此处输出 :file数组 ( file对象包含的信息:) lastModified 最后一次修改时间(毫秒) lastModifiedDate 最后一次修改日期 name: 文件名 type: 文件类型 size:文件大小
获取 / 遍历 所有上传的file文件
for(var i=0;i<=this.files.length;i++){
创建阅读实例
var fr= new FileReader ( )
设置读取方式
readAsDataURL ( file )
- readAsDataURL( file ) 以地址读取,接收参数为:文件对象
- readAsText( file ) 以文本读取
- readAsBinaryString( file ) 以二进制读取
监听onload(等)事件
fr.onload=function ( ) { }
- onload: 读取完成
- onloadstart 开始读取
- onloadend 结束读取 无论成功失败都会触发
- onerror 错误触发(读取出错时)
- onabort 中断读取时触发
创建图片/ 文件 并追加到body里面去
var img=new Image( ) ; img.src=this.result
document.body.appendChild(img)
//console.log ( this . files ) 输出 :FileList {0: File, length: 1}> file:(展开之后为以下内容) length: 10: FilelastModified: 1463621270000 lastModifiedDate: Thu May 19 2016 09:27:50 GMT+0800 (中国标准时间) name: "background.png" size: 28052type: "image/png" webkitRelativePath: ""> __proto__: File__proto__: FileList// html<input type="file" name="" id="file" multiple// JSvar inp=document.querySelector("#file"); inp.onchange=function(){ console.log(this.files); for(var i=0;i<=this.files.length;i++){ var file=this.files[i]; console.log(file); var fr= new FileReader(); // fr.readAsDataURL(file);//接收参数为:文件对象 // fr.readAsText(file); fr.readAsBinaryString(file); fr.onload=function(){ console.log(this.result); var img=new Image(); img.src=this.result; document.body.appendChild(img) } } // } }
drag 拖拽
1、一个元素拖拽到另一个处
draggable 允许该元素被拖动
被拖拽元素事件:
ondragstart=function(e) { } 开始拖拽
ondrag=function(e) { } 拖拽中
ondragend=function(){ } 拖拽结束
目标元素事件:(拖拽到此元素)
ondragenter=function(){ } 进入目标元素
dragleave=function(){ } 离开目标元素
浏览器默认禁止在元素上触发 ondrop(禁止将其他元素拖拽到目标元素上放手)所以需要在dragover上阻止浏览器的默认事件才能触发ondrop -------------用 e. preventDefault ( ) ;
ondragover=function(e) { } 在目标元素中移动
ondrop=function(e){ } 在目标元素中放手
dataTransfer 贯穿于整个拖拽生命中期的承载对象
e . dataTransfer . setData ( format , content )
format : 数据额格式——支持text URL 或其他MIME类型
content : 要传递的内容- e . dataTransfer.getData ( format ) 获取通过 setData 设置的值
e . dataTransfer.effectAllowed = “ ” 设置拖拽元素的鼠标效果只能在 ondragstart 里设置
常见的有:move copy link copyLink all none…
当指定为none时,ondrop无法触发
e . dataTransfer.dropEffect = ” ” 设置拖拽元素的 ondrop 鼠标效果 只能在 ondrop 里设置
//html
//JS
//被拖拽元素
var box=document.querySelector(“.box”);
//目标元素
var target=document.querySelector(“.box2”);
/*被拖拽元素事件:
*/
box.ondragstart=function(e){
console.log(“开始”);
console.log(e);
console.log(e.dataTransfer);
// e.dataTransfer.setData(“text”,”hello”);
e.dataTransfer.setData(“text”,e.target.id)// 此处e.target指的是.box / #_box
}
box.ondrag=function(){
// console.log(“拖拽中”);}
box.ondragend=function(){
// console.log(“拖拽结束”);
}target.ondragenter=function(){
// console.log(“进入目标元素”);
}
target.dragleave=function(){
// console.log(“离开目标元素”);
}
/*浏览器默认进制在元素上drop(禁止将其他元素拖拽到目标元素上放手)
需要在dragover是阻止浏览器的默认时间才能触发ondrop*/
target.ondragover=function(e){
// console.log(“在目标元素上移动”);
e.preventDefault();
}
target.ondrop=function(e){
//浏览器默认触发不了ondrop,需要更改target.ondragover事件来触发
console.log(“在目标元素中放手”);
// target.appendChild(box);
console.log(e.dataTransfer.getData(“text”));
/*e.dataTransfer.setData(“text”,选择器 / “字符串”…)
e.dataTransfer.getData(“text”)上面第一个参数set了什么,下面就get什么
*/
var eId=e.dataTransfer.getData(“text”);
target.appendChild(document.querySelector(“#”+eId));
}- e . dataTransfer.getData ( format ) 获取通过 setData 设置的值
2、通过拖拽上传文件
注意事项:
- 要在.ondragover 中阻止浏览器默认 不允许拖拽 设置 ————–用e.preventDefault();
要在.ondrop 中阻止文件拖进来 就被浏览器自动刷新/下载显示的事件 ————–用e.preventDefault();
// html
拖拽文件到此处// JS
var box=document.querySelector(“.box”);
box.ondragover=function(e){
e.preventDefault();
}
box.ondrop=function(e){
e.preventDefault();//阻止文件拖进来 ,浏览器自动刷新/下载的事件
console.log(e.dataTransfer.files);
var files=e.dataTransfer.files;
for(var i=0;i
- H5新增API
- h5新增的内容和api
- H5中新增API-历史管理&Web应用&应用缓存
- [前端] H5新增属性
- H5 - HTML5新增标签
- H5新增功能
- H5新增表单元素
- H5新增标签
- h5新增的标签
- H5新增表单元素
- H5新增标签
- h5新增的标签
- H5新增特性
- h5新增标签及css3新增属性
- 新增的h5页面元素
- H5新增的表单属性
- H5:新增data-*属性详解
- H5新增表单输入项
- range xrange
- 如何提高数据库性能
- storage class specified for parameter
- 多态
- Android通用Adapter整理
- H5新增API
- 笨办法学python 习题46
- STL 中容器
- thinkphp方法success和error跳转时间以及返回ajax
- 文章标题
- PHP多图片上传
- Python爬虫Handler处理器 和 自定义Opener系列之四
- Harry Potter and Numbers(水,粗心错)
- Eclipse 用Maven 编译错误 Dynamic Web Module 3.1 requires Java 1.7 or newer