您的位置:首页 > Web前端 > HTML

HTML api学习笔记

2020-04-03 07:31 1101 查看

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>";
};

事件:

  • 点赞
  • 收藏
  • 分享
  • 文章举报
thelight02 发布了11 篇原创文章 · 获赞 0 · 访问量 212 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: