HTML api学习
拖放
<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
ev.preventDefault(); //阻止原生事件
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id); //为拖放事件ev添加data
}
function drop(ev) {
ev.preventDefault(); //阻止原生事件
var data = ev.dataTransfer.getData("text"); //从事件ev中读取data
ev.target.appendChild(document.getElementById(data)); //利用data中的元素id构建标签完成拖放
}
</script>
</head>
<body>
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
//ondragover拖放结束
<img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
//draggable属性值为 true设置元素可拖放
//ondragstart拖放开始事件
</body>
</html>
web本地存储
通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储。
在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求。本地存储则更安全,并且可在不影响网站性能的前提下将大量数据存储于本地。
与 cookie 不同,存储限制要大得多(至少5MB),并且信息不会被传输到服务器。
<!DOCTYPE html>
<html>
<body>
<div id="result"></div>
<script>
// Check browser support
if (typeof(Storage) !== "undefined") {
// Store
localStorage.setItem("lastname", "Gates"); //添加键-值对
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("lastname"); //读取写入键-值对
} else {
document.getElementById("result").innerHTML = "抱歉!您的浏览器不支持 Web Storage ...";
}
</script>
</body>
</html>
localStorage 对象存储的是没有截止日期的数据。当浏览器被关闭时数据不会被删除,在下一天、周或年中,都是可用的。
sessionStorage 对象等同 localStorage 对象,用法也一致,不同之处在于只对一个 session 存储数据。如果用户关闭具体的浏览器标签页,数据也会被删除。
应用缓存
HTML5 引入了应用程序缓存(Application Cache),这意味着可对 web 应用进行缓存,并可在没有因特网连接时进行访问。<html manifest="demo.appcache">
使用应用缓存
demo.appcache内容:
CACHE MANIFEST
/theme.css
/logo.gif
/main.js
#CACHE MANIFEST部分规定浏览器会从网站的根目录下载这三个文件,然后,无论用户何时与因特网断开连接,这些资源依然可用
NETWORK:
login.asp
#NETWORK 部分规定文件 "login.php" 永远不会被缓存,且离线时是不可用的
FALLBACK:
/html/ /offline.html
#FALLBACK 部分规定如果无法建立因特网连接,则用 "offline.html" 替代 /html/ 目录中的所有文件
更新缓存:
一旦应用被缓存,它就会保持缓存直到发生下列情况:
1.用户清空浏览器缓存
2.manifest 文件被修改(参阅下面的提示)
提示:以 “#” 开头的是注释行,但也可满足其他用途。应用的缓存只会在其 manifest 文件改变时被更新。如果您编辑了一幅图像,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。
3.由程序来更新应用缓存
Web Workers
当在 HTML 页面中执行脚本时,页面是不可响应的,直到脚本已完成。
Web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 运行在后台。
<!DOCTYPE html>
<html>
<body>
<p>Count numbers: <output id="result"></output></p>
<button onclick="startWorker()">Start Worker</button>
<button onclick="stopWorker()">Stop Worker</button>
<br><br>
<script>
var w;
function startWorker() {
if(typeof(Worker) !== "undefined") { //检查浏览器是否支持
if(typeof(w) == "undefined") {
w = new Worker("demo_workers.js"); //创建工作对象
}
w.onmessage = function(event) {
document.getElementById("result").innerHTML = event.data; //获取工作数据
};
} else {
document.getElementById("result").innerHTML = "Sorry! No Web Worker support.";
}
}
function stopWorker() {
w.terminate(); //工作结束
w = undefined; //使之可重用
}
</script>
</body>
</html>
demo_workers.js内容:
var i=0;
function timedCount()
{
i=i+1;
postMessage(i); //传输数据,触发onmessage 事件
setTimeout("timedCount()",500); //延时函数
}
timedCount();
Server-Sent
Server-Sent 事件指的是网页自动从服务器获得更新。
以前也可能做到这一点,前提是网页不得不询问是否有可用的更新。通过 Server-Sent 事件,更新能够自动到达。
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
事件:
来源:CSDN
作者:thelight02
链接:https://blog.csdn.net/thelight02/article/details/104734935