HTML 5

2017-12-04  本文已影响0人  majun00

新增的标签

用法:form fieldset legend(为fieldset元素定义标题)

新增的表单属性:

on:打开,off:关闭,
必须成功提交过,且添加autocomplete的元素必须有name属性

处理复杂表单时会需要,当某个表单元素并没有包含在form中时,可在属性中用form属性指定表单id

新增的表单输入类型

新增的表单事件:

DOM扩展

  1. 获取元素:
    • document.querySelector('selector')

    获取单个元素,如果获取的元素不止一个,那么只会返回满足条件的第一个元素。如果是类选择器,必须添加.,如果是id选择器,必须添加# ,否则当成标签处理
    - document.querySelectorAll('selector')
    > 获取满足条件的所有元素,以类数组形式存在

  2. 类名操作:
    • classList.add('class')
    • classList.remove('class')
    • classList.toggle('class')
    • classList.contains('class') 检测是否存在指定class
    • classList.item(n) 获取样式
  3. 自定义属性
<p data-school-name="itcast"></p>
var value=p.dataset["schoolName"];

网络接口

window.addEventListener("online",function(){
    alert("网络连通了");
});
window.addEventListener("offline",function(){
    alert("网络断开了");
})

全屏接口

  1. 不同浏览器需要添加不同的前缀chrome:webkit firefox:moz ie:ms opera:o
  2. document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement 注意此时的拼写
window.onload=function(){
    var div=document.querySelector("div");
    /*全屏操作*/
    document.querySelector("#full").onclick=function(){
        if(div.requestFullScreen){
            div.requestFullScreen();
        }
        else if(div.webkitRequestFullScreen){
            div.webkitRequestFullScreen();
        }
        else if(div.mozRequestFullScreen){
            div.mozRequestFullScreen();
        }
        else if(div.msRequestFullScreen){
            div.msRequestFullScreen();
        }
    }
    /*退出全屏*/
    document.querySelector("#cancelFull").onclick=function(){
        if(document.cancelFullScreen){
            document.cancelFullScreen();
        }
        else if(document.webkitCancelFullScreen){
            document.webkitCancelFullScreen();
        }
        else if(document.mozCancelFullScreen){
            document.mozCancelFullScreen();
        }
        else if(document.msCancelFullScreen){
            document.msCancelFullScreen();
        }
    }
    /*判断是否是全屏状态*/
    document.querySelector("#isFull").onclick=function(){
        if(document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement){
            alert(true);
        }
        else{
            alert(false);
        }
    }
}

FileReader 读取文件内容

- .readAsText():读取文本文件,返回文本字符串,默认编码是UTF-8
- .readAsBinaryString():读取任意类型的文件,返回二进制字符串
这个方法不是用来读取文件展示给用户看,而是存储文件
例如:读取文件的内容,获取二进制数据,传递给后台,后台接收了数据之后,再将数据存储
- .readAsDataURL():
读取文件,获取一段以data开头的字符串,
这段字符串的本质就是DataURL,
DataURL是一种将文件嵌入到文档的方案,
(一般就是指图像或者能够嵌入到文档的文件格式)DataURL是将资源转换为base64编码的字符串形式,
并且将这些内容直接存储在url中,优化网站的加载速度和执行效率

FileReader提供一个完整的事件模型,用来捕获读取文件时的状态

- onabort:读取文件中断片时触发
- onerror:读取错误时触发
- onload:文件读取成功完成时触发
- onloadend:读取完成时触发,无论成功还是失败
- onloadstart:开始读取时触发
- onprogress:读取文件过程中持续触发
- abort():中断读取
<form action="">
    文件: <input type="file" name="myFile" id="myFile" onchange="getFileContent();"> <br>
    <input type="submit">
</form>
<img src="" alt="">
var div = document.querySelector("div");
function getFileContent() {
    var file = document.querySelector("#myFile").files[0];
    //文件存储在file表单元素的files属性中,它是一个数组
    var reader = new FileReader();
    //创建文件读取对象
    reader.readAsDataURL(file);
    //读取文件,获取DataURL
    //需要传递一个参数 binary large object:文件(图片或者其它可以嵌入到文档的类型)
    //读取完文件之后,它会将读取的结果存储在文件读取对象的result中,void说明没有任何的返回值
    reader.onload = function () {
        document.querySelector("img").src = reader.result;
    }
}

拖拽接口

注: 在h5中,如果想拖拽元素,就必须为元素添加标签属性draggable="true",图片和超链接默认就可以拖拽

dataTransfer

  1. 通过dataTransfer来实现数据的存储
    e.dataTransfer.setData(format,data);
    format:数据的类型:text/html text/uri-list
    Data:数据:一般来说是字符串值
    e.dataTransfer.setData("text/html", e.target.id);
  2. 通过e.dataTransfer.setData存储的数据,只能在drop事件中获取
    e.dataTransfer.getData(format,data);
    var id = e.dataTransfer.getData("text/html");
    e.target.appendChild(document.getElementById(id));
document.ondragstart = function (e) {
    e.target.style.opacity = 0.5;
    e.dataTransfer.setData("text/html", e.target.id);
}
document.ondragend = function (e) {
    e.target.style.opacity = 1;
}
document.ondragover = function (e) {
    e.preventDefault();
    //浏览器默认会阻止ondrop事件,我们必须在ondragover中阻止浏览器的默认行为
}
document.ondrop = function (e) {
    var id = e.dataTransfer.getData("text/html");
    e.target.appendChild(document.getElementById(id));
}

地理位置接口 (不常用)

var x = document.getElementById("demo");
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(success, error, option)
    } else {
        x.innerHTML = "Geolocation is not supported by this browser."
    }
}
function success(position) { //注意position
    x.innerHTML = position.coords.latitude + position.coords.longitude;
}
function error(error) {
    switch (error.code) {
        case error.PERMISSION_DENIED:
            x.innerHTML = "User denied the request for Geolocation."
            break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML = "Location information is unavailable."
            break;
        case error.TIMEOUT:
            x.innerHTML = "The request to get user location timed out."
            break;
        case error.UNKNOWN_ERROR:
            x.innerHTML = "An unknown error occurred."
            break;
    }
}
getLocation();

注意:
1. navigator.geolocation.getCurrentPosition(showPosition,showError,{});
或navigator.geolocation.getCurrentPosition(success,error,option);
navigator.watchPosition(successCallback, errorCallback, options)
2.option:可以设置获取数据的方式
- enableHighAccuracy:true/false:是否使用高精度
- timeout:设置超时时间,单位ms
- maximumAge:可以设置浏览器重新获取地理信息的时间间隔,单位是ms
3.
- position.coords.latitude 纬度
- position.coords.longitude 经度
- position.coords.accuracy 精度
- position.coords.altitude 海拔高度

sessionStorage,localStorage

  1. 存储容量5mb左右
  2. 本质是存储在当前页面的内存中,其它页面和浏览器无法获取数据
  3. 生命周期为关闭当前页面,关闭页面,数据会自动清除
  1. 存储容量20mb左右
  2. 不同浏览器不能共享数据,但是在同一个浏览器的不同窗口中可以共享数据
  3. 永久生效,它的数据是存储在硬盘上,并不会随着页面或者浏览器的关闭而清除.如果想清除,必须手动清除

应用缓存

<html lang="en" manifest="demo.appcache">
CACHE MANIFEST
#上面一句代码必须是当前文档的第一句
#后面写注释

#需要缓存的文件清单列表
CACHE:
#下面就是需要缓存的清单列表
../images/l1.jpg
../images/l2.jpg
# *:代表所有文件

#配置每一次都需要重新从服务器获取的文件清单列表
NETWORK:
../images/l3.jpg

#配置如果文件无法获取则使用指定的文件进行替代
FALLBACK:
../images/l4.jpg ../images/banner_1.jpg
# /:代表所有文件
上一篇下一篇

猜你喜欢

热点阅读