html5第二天

1.全屏(requestFullscreen)

注意: 存在兼容性问题

<body>
        <input type="button"  value='进入全屏幕'/>
</body>

<script type="text/javascript">
    // query方法 支持 CSS3中的选择器
    document.querySelector('input[type=button]').onclick = function (e){
        // 标准的语法 就是下面这个
        // ie11 以下 都不支持
        // 由于兼容性问题 以及 浏览器自带了全屏 实际开发中 使用频率 较低
        if(this.requestFullscreen){
            this.requestFullscreen();
        }else if(this.webkitRequestFullScreen){
            this.webkitRequestFullScreen()
        }else if(this.msRequestFullscreen){
            this.msRequestFullscreen();
        }else if(this.mozRequestFullScreen){
            this.mozRequestFullScreen();
        }
    }
</script>

解释:此api有快捷键F11可以实现,在实际开发中用的十分少用。

2.文件读取 (FileReader)##

1. 创建文件读取对象

var reader = new FileReader();

2.通过当前的file标签 获取选择的文件

console.log(this.files);

3.调用该对象的方法读取文件 文件

4.读取文件是一个耗时操作 不一定什么时候读取完毕

reader.readAsDataURL(this.files[0]);

// 添加事件
5.耗时操作 通过事件的方式进行注册 并且回调

reader.onload = function (){
6.使用读取完毕的文件

console.log(reader.result);

7.使用返回的结果 即可

document.querySelector('.iconBox').style.background = 'url('+ reader.result+') no-repeat center/cover';

}

- 实现加载率

//onprogress * 当浏览器正在获取媒介数据时运行的脚本。 
reader.onprogress=function(evt){
            var precent=evt.loaded/evt.total;
            // precent=precent.toFixed(4);
            precent=(precent*100).toFixed(2);
            console.log(precent);
            //读取了多少(加载当前)
            console.log(evt.loaded);
            //一共需要加载多少
            console.log(evt.total);
            document.querySelector("h2").innerHTML=precent+'%';
        }

在onprogress(evt)事件中

//读取了多少(加载当前)
console.log(evt.loaded);

//一共需要加载多少
console.log(evt.total);

代码演示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style>
            .iconBox{
                width: 200px;
                height: 200px;
                border:5px dashed red;
            }
            .container{
                display: flex;
            }
        </style>
    </head>
    <body>
        <h1>请选择您的头像</h1>
        <div class='container'>
            <input type="file"  id="selectFile" />
            <div class='iconBox'></div>
        </div>
        <h2></h2>
    </body>
</html>
<script type="text/javascript">
    document.querySelector('input[type=file]').onchange = function (){
//      console.log('123');
        
        // 创建文件读取对象
        var reader = new FileReader();
        
        // 通过当前的file标签 获取选择的文件
        console.log(this.files);
        
        // 调用该对象的方法读取文件 文件
        // 读取文件是一个耗时操作 不一定什么时候读取完毕
        reader.readAsDataURL(this.files[0]);
        
        // 添加事件
        // 耗时操作 通过事件的方式进行注册 并且回调
        reader.onload = function (){
            // 使用读取完毕的文件
            console.log(reader.result);
            //使用返回的结果 即可
            document.querySelector('.iconBox').style.background = 'url('+ reader.result+') no-repeat center/cover';
        }

        reader.onprogress=function(evt){
            var precent=evt.loaded/evt.total;
            // precent=precent.toFixed(4);
            precent=(precent*100).toFixed(2);
            console.log(precent);
            console.log(evt.loaded);//读取了多少
            console.log(evt.total);//一共多少
            document.querySelector("h2").innerHTML=precent+'%';
        }
        
        

    }
</script>

3.拖拽事件

鼠标控制元素 ,事件

    ondragstart    |     在拖动操作开端运行的脚本。(开始移动元素) 
    ondrag         |     元素被拖动时运行的脚本。 (移动元素移动时)
    ondragend      |     在拖动操作末端运行的脚本。(结束移动元素) 

目标元素(移动到的区域成为目标元素)事件:

ondragenter    |     当元素元素已被拖动到有效拖放区域时运行的脚本。(进入目标元素) 
ondragleave    |     当元素离开有效拖放目标时运行的脚本。(离开目标元素) 
ondragover     |     当元素在有效拖放目标上正在被拖动时运行的脚本。(在目标元素内移动) 
ondrop         |     当被拖元素正在被拖放时运行的脚本。(在目标元素内放下) 

注意:

  1. 如果使用ondrop事件,必须在前面先定义使用ondragover事件,否则事件ondrop会无效。

4.本地存储(localStorage)和(sessionStorage)

1.文档源:

截图20170207161320.png

注意:在使用本地存储的时候,只能在同源下使用,不能跨域使用

(跨域的意思是在文档源中 协议,主机名和端口任意一个不同)

2.本地存储api

//查找数据
localStorage.key(i);
sessionStorage.key(i);
//存储数据
localStorage.setItem(key,value);
sessionStorage.setItem(key,value);

//得到数据
localStorage.getItem(key);
sessionStorage.getItem(key);

//删除数据
localStorage.removeItem(key);
sessionStorage.removeItem(key);
localStorage.clear();
sessionStorage.clear();


//存储json数据
var obj={name:'hellow'};
JSON.stringify( obj ); //转化成json字符串

var str=JSON.stringify( obj );
JSON.parse( str ); //转化成json对像

存储json对象的代码演示:

var  obj={name:'hp'};
var o=JSON.stringify( obj );
// console.log(o);
   window.localStorage.setItem('myColor',o);
 console.log(JSON.parse(window.localStorage.getItem('myColor',obj) ));

5.地理定位(navigator.geolocation)

window.navigator.geolocation.getCurrentPosition(function(position){
})

使用案例:

        window.navigator.geolocation.getCurrentPosition(function(position){
            //console.log(position);
            console.log('位置获取成功');
            console.log('经度:'+position.coords.longitude);
            console.log('纬度:'+position.coords.latitude);
        })

6.视频api(video)

| 方法 | 属性 | 事件 |
|---|-----|
| play() | currentSrc | play
|pause() | currentTime | pause
|load() | videoWidth | progress
|canPlayType | videoHeight | error
| | duration | timeupdate
| | ended | ended
| | error | abort
| | paused | empty
| | muted | emptied
| | seeking | waiting
| | volume | loadedmetadata
| | height | null |
| | width | null |

注释:在所有属性中,只有 videoWidth 和 videoHeight 属性是立即可用的。在视频的元数据已加载后,其他属性才可用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • H5 meta详解 viewport width:控制 viewport 的大小,可以指定的一个值,如果 600,...
    FConfidence阅读 800评论 0 3
  • 1.全屏(requestFullscreen) 注意: 存在兼容性问题 解释:此api有快捷键F11可以实现,在实...
    枫丶筱阅读 308评论 0 0
  • 个人博客:https://yeaseonzhang.github.io 花了半个多月的时间,终于又把“JS红宝书”...
    Yeaseon阅读 1,724评论 2 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 今天,你告诉我,下个月2号,你要结婚了,我问都有谁去,你说时间很尴尬,应该没多少人能到场,我说,不管怎么样,你结婚...
    高李李阅读 502评论 0 2