当前位置: 首页 > news >正文

专业网站建设市场在北京建网站

专业网站建设市场,在北京建网站,专业制作假行驶证,福田网站建设方案服务源码分析xhr相关知识点Ajax要点分析拖拽事件以及粘贴事件具体实现总结xhr相关知识点XMLHttpRequest.upload 属性返回一个 XMLHttpRequestUpload对象#xff0c;用来表示上传的进度。通过onprogress属性进行监听,是在 XMLHttpRequest 完成之前周期性调用的函数。xhr.upload.onp…源码分析xhr相关知识点Ajax要点分析拖拽事件以及粘贴事件具体实现总结xhr相关知识点XMLHttpRequest.upload 属性返回一个 XMLHttpRequestUpload对象用来表示上传的进度。通过onprogress属性进行监听,是在 XMLHttpRequest 完成之前周期性调用的函数。xhr.upload.onprogress  function progress(e) {event.loaded 已传输的数据量event.total 总共的数据量if (e.total  0) {e.percent  e.loaded / e.total * 100;}};复制代码XMLHttpRequestEventTarget.onload 是 XMLHttpRequest 请求成功完成时调用的函数。使用该属性使得判断更加简单使用onreadystatechange属性xhr.onreadystatechange function () {if(xhr.readyState XMLHttpRequest.DONE) {//当前状态码为DONE(4),表示下载操作已完成console.log(xhr.responseText)}}使用onload属性xhr.onload function onload() {...};复制代码HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。信息响应(100-199)成功响应(200-299)重定向(300-399)客户端错误(400-499)服务器错误(500-599)Ajax的封装源码链接 github.com/ElemeFE/ele…该源码不考虑IE低版本的情况即ActiveXObject不在考虑范围。创建一个FormData对象将相关的数据进行添加包括文件const formData new FormData();if (option.data) {Object.keys(option.data).map(key {formData.append(key, option.data[key]); //通过遍历添加新的属性值});}formData.append(option.filename, option.file); //添加文件复制代码状态码status小于200或大于等于300的状态进行错误提示xhr.onload function onload() {if (xhr.status 200 || xhr.status 300) {return option.onError(getError(action, option, xhr), getBody(xhr));}};复制代码设置请求头信息忽略headers的继承属性同时值不能为null这里进行headers.hasOwnProperty(item)的判断可以避免这种情况:请求 中的headers继承共用headers中的请求头信息。const headers option.headers || {};for (let item in headers) {if (headers.hasOwnProperty(item) headers[item] ! null) {xhr.setRequestHeader(item, headers[item]);}}复制代码拖拽事件以及粘贴事件拖拽事件中对需要拖动的元素赋予draggable属性;在释放位置所在的元素上使用drop事件同时在拖动的元素上dragover阻止默认行为以启用dropdocument.addEventListener(dragover, function( event ) {// 阻止默认动作以启用dropevent.preventDefault();}, false);复制代码利用DataTransfer这个对象可以在拖拽过程中传递数据涉及Upload组件的属性 e.DataTransfer.files在拖动操作中表示文件列表,是一个类数组dragevent.dataTransfer.setData(text, xxx); //拖动时设置数据dropevent.dataTransfer.getData(text); //释放时获取数据复制代码粘贴事件paste: 事件处理程序可以通过调用事件的 clipboardData 属性上的 getData()访问剪贴板内容涉及Upload组件的属性: e.clipboardData.files获取到粘贴的文件列表,同样也是一个类数组event.clipboardData.getData()复制代码具体实现Upload组件提供了3种选择文件的方式 点击拖拽和粘贴点击的方式通过调用原生的input点击事件监听input上的change事件获取到文件列表拖拽和粘贴的方式则是通过事件drop,paste直接获取到文件列表由于在点击方式中使用的是点击input实现的所以在单选时弹出文件选择框时已经限制只能选中一个但是拖拽和粘贴在单选时仍然可以选择多个文件所以需要进行过滤保证单选模式下只能存在一个文件。校验文件格式及大小符合条件就开始发起请求为每个文件添加属性(uid,percentage,status...),最后通过回调函数获取上传进度成功请求失败请求相关参数。事件的处理,通过动态触发input元素的click事件值得注意的是选择完成后需要手动设置value值为空保证下次选择同一文件还会触发input的change事件//点击方式handleClick () {...this.$refs.input.click();},handleChange (e) {const files e.target.files;...this.$refs.input.value null;},//拖拽方式onDrop (e) {this.uploadFiles(e.dataTransfer.files);},//粘贴方式handlePaste (e) {this.uploadFiles(e.clipboardData.files);}复制代码对文件列表初始化uploadFiles (files) {let postFiles Array.prototype.slice.call(files); // 类数组转数组if (!this.multiple) postFiles postFiles.slice(0, 1); //单选下保证所有的文件列表只有一条数据if (postFiles.length 0) return;postFiles.forEach(file {this.upload(file);});},复制代码创建每个文件对应的数据集合,并且发起请求通过值传递为每个数据集合添加uidpost (file) {this.handleStart(file);ajax({...,onProgress: e {this.handleProgress(e, file);},onSuccess: res {this.handleSuccess(res, file);},onError: (err, response) {this.handleError(err, response, file);}});}复制代码请求回调函数为对应的处理函数返回值handleProgress (e, file) {const _file this.getFile(file); //获取到文件的详细信息this.onProgress(e, _file, this.fileList); //事件当前文件文件列表_file.percentage e.percent || 0; //进度}handleSuccess (res, file) {const _file this.getFile(file);if (_file) {_file.status finished; //更新状态_file.response res;this.onSuccess(res, _file, this.fileList);}},handleError (err, response, file) {const _file this.getFile(file);const fileList this.fileList;_file.status fail; //更新状态fileList.splice(fileList.indexOf(_file), 1);this.onError(err, response, file);},复制代码总结Upload组件涉及的API较广需要了解还有一些概念比如代码的值传递基于引用类型的复制灵活地为每个文件集合添加uid属性同时又能快捷方便删除项。
http://www.yutouwan.com/news/400882/

相关文章:

  • 做网站 怎么推广dw wordpress
  • 深圳宝安区哪里好玩班级优化大师下载
  • 社区网站 备案做项目的网站
  • 培训通网站建设宁波北京网站建设
  • 携程网建设网站的理由交互设计产品有哪些
  • 网站怎么更改后台登陆密码网站设计中的事件是什么
  • 用ip地址做网站网站建设 台州
  • 分享网站模板信和财富网站开发
  • 网站开发合同 doc怎么自己做视频网站
  • 网站开发就业培训班免费红色ppt模板下载
  • 品牌网站建设的意义网站建设常规尺寸
  • 老徐蜂了网站策划书北京网络优化公司
  • 建站哪家好 discuz郑州那家做网站便宜
  • 网站关键字 怎么设置网站建设研究方法
  • 莆田建设局网站wordpress新建字段
  • 课程微网站开发技术wordpress4.4.1
  • 简述织梦网站上传步骤有什么做公众号封面图的网站
  • 做毕业设计哪个网站好应用软件开发包括什么
  • 松江外贸网站建设WordPress恶意扫描
  • 正在建设中的网站可算违规阿里云域名
  • 网站开发需要的软件德尔普网络做网站怎么样
  • 宿迁市建设局网站360建筑网怎么找回密码
  • 个人网站建设的流程怎么用dw做可上传文件的网站
  • 网站需求分市场推广渠道有哪些
  • 网站设计目标与背景互联网网站如何做流量统计
  • 推荐昆明做网站建设怎么仿别人的网站
  • 雄安建设工程信息网站旅游网站开发与建设论文
  • 学校网站首页制作中山网站建设多少钱
  • 网站被做跳转怎么办行业网站建设多少钱
  • 请人做网站 说我要求多建筑施工企业