JS 里拖拽三事件, onmousedown onmousemove onmouseup 是实现交互性效果,根据鼠标的移动位置让标签元素联动
而 H5 拖拽也可以实现但更简单,实际例子: 百度图片识别,qq 邮箱文件提交,百度网盘文件上传,并可以获取到文件的 名称,大小,修改时间
标签元素默认是不可以拖拽的,draggable="true"
才能够被拖拽
js
和h5
拖拽的对比drag
七事件的理解
// 拖拽元素
drag.ondragstart = function() {
// 拖拽的一瞬间
this.style.background = 'pink'
}
drag.ondrag = function() {
// 连续触发
document.title = n++
}
drag.ondragend = function() {
this.style.background = 'red'
}
// 目标元素
box.ondragenter = function() {
// 监听拖拽元素进入到目标元素区域内
this.style.background = 'skyblue'
}
box.ondragover = function() {
// 在目标元素身上 连续触发
this.innerHTML = n++
}
box.ondragleave = function() {
// 在目标元素身上离开
this.innerHTML = ''
}
box.ondrop = () => {
// 将拖动的元素放置在目标元素上时触发
}
drag
兼容处理方式dataTransfer
对象里的数据const li = list.querySelectorAll('li')
li.forEach((item, index) => {
item.setAttribute('draggable', 'true')
item.ondragstart = function(e) {
// console.log(e.dataTransfer.setData())
e.dataTransfer.setData('key', index)
}
})
console.log(
e.dataTransfer.files[0].name,
e.dataTransfer.files[0].type,
e.dataTransfer.files[0].lastModified,
e.dataTransfer.files[0].lastModifiedDate.toLocaleDateString(),
e.dataTransfer.files[0].lastModifiedDate.toLocaleTimeString(),
e.dataTransfer.files[0].lastModifiedDate.toDateString()
)
Blog
对象与URL
对象读取数据
Blob 对象代表了一段二进制数据,提供了一系列操作接口
file对象的父类型是Blob对象
对象 URL 也被称为 blob URL,指的是引用保存在 File 或 Blob 中数据的 URL,使用对象 URL 的好处是没必要把内容读取到 js 中,而直接使用文件内容,能生成一个链接,例如 Img 的 src = URL
// 拖拽图片预览 let oFile = e.dataTransfer.files[0] let blob = new Blob([oFile]) // 第一参数一定是个数组 第二个mime类型 let url = window.URL.createObjectURL(blob) let img = new Image() img.width = 300 img.height = 150 img.src = url img.onload = function() { document.body.appendChild(this) }FileReader
读取数据
// 拖拽图片预览 let oFile = e.dataTransfer.files[0] // 创建文件读取对象 let reader = new FileReader() reader.readAsDataURL(oFile) // 分析oFile 文件对象 reader.onload = function() { // 返回data: base64数据 A-Z a-z 0~9 + / = 64位字符 console.log(this.result) let img = new Image() img.width = 300 img.height = 150 img.src = this.result img.onload = function() { document.body.appendChild(this) } }classList
对象对class
类名增删改查dataset
对象对data-Attr
格式的数据增删改查parse
与stringify
函数对数据类型解析和编码类型decodeURL
与encodeURL
函数对 url 数据进行解码和编码atob
与btoa
函数对base64
数据进行解码和编码history
操作数据布局history
实现历史管理功能history
对象下的back
-forward
-go
ajax
和php
数据交互jsonp
跨域访问的核心本质ajax
和 原生node
数据交互ajax
和 express框架
数据交互ajax
和 koa2框架
数据交互FormData
对象上传文件到服务器FormData
对象上传文件到服务器onprogress
事件及loaded
与total
属性真实显示上传进度setItem
与getItem
存储和获取数据webWorker
多线程原理cache离线存储设计
var source=new EventSource("demo_sse.php");
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br />";
};
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush(); //刷新缓冲区的内容,输出
?>
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有