• 第90天:HTML5中文件API和拖放操作


    一、文件API

    File API:提供客户端本地操作文件的可能

    multiple是让文件域可以多选
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>文件API</title>
     6     <link rel="stylesheet" href="bootstrap.css">
     7 </head>
     8 <body>
     9     <form action="">
    10         <!--对于表单里的input可以直接通过name属性找到它 document.forms[0].input_file   multiple是让文件域可以多选-->
    11         <input id="input_file" class="form-control hidden" type="file" name="input_file" multiple>
    12         <input id="btn_select" class="btn btn-info" type="button" value="选择文件">
    13         <!--<input id="btn_read" class="btn btn-warning" type="button" value="读取文件列表">-->
    14         <ul id="file_list" class="list-group">
    15 
    16         </ul>
    17     </form>
    18     <script>
    19         (function(){
    20             var inputFile=document.querySelector('#input_file');
    21             var btnRead=document.querySelector('#btn_read');
    22             var fileList=document.querySelector('#file_list');
    23             var btnSelect=document.querySelector('#btn_select');
    24 
    25             btnSelect.addEventListener('click',function(){
    26                 //在按钮点击时调用input的点击
    27                 inputFile.click();
    28             });
    29 
    30             //点击过后
    31             /*btnRead.addEventListener('click',function(){
    32                 var files=inputFile.files;
    33                 for(var i=0;i<files.length;i++){
    34                     var li=document.createElement('li');
    35                     li.setAttribute('class','list-group-item');
    36                     //创建信息的子节点
    37                     li.innerHTML='<h5 class="list-group-item-heading">'+files[i].name+'</h5><p class="list-group-item-text">'+files[i].lastModifiedDate.toLocaleDateString()+' '+files[i].lastModifiedDate.toLocaleTimeString()+' '+(files[i].size/1024).toFixed(2)+'KB</p>';
    38                     fileList.appendChild(li);
    39                 }
    40             });*/
    41 
    42             //选择完成后 直接显示文件信息
    43             inputFile.addEventListener('change',function(){
    44                 var files=inputFile.files;
    45                 for(var i=0;i<files.length;i++){
    46                     var li=document.createElement('li');
    47                     li.setAttribute('class','list-group-item');
    48                     //创建信息的子节点
    49                     li.innerHTML='<h5 class="list-group-item-heading">'+files[i].name+'</h5><p class="list-group-item-text">'+files[i].lastModifiedDate.toLocaleDateString()+' '+files[i].lastModifiedDate.toLocaleTimeString()+' '+(files[i].size/1024).toFixed(2)+'KB</p>';
    50                     fileList.appendChild(li);
    51                 }
    52             });
    53         })();
    54     </script>
    55 </body>
    56 </html>

    二、拖放操作

    在捕获drop事件时,必须先阻止默认事件。

    //如果要捕获drop事件,就一定要在该事件中阻止默认事件
         target.addEventListener('dragover',function(e){
            e.preventDefault();//阻止默认事件
            e.stopPropagation();//阻止冒泡
         });
     1 <!DOCTYPE html>
     2 <html lang="zh-CN">
     3 
     4 <head>
     5   <meta charset="UTF-8">
     6   <title>拖放操作</title>
     7   <meta name="author" content="汪磊">
     8   <link rel="stylesheet" href="bootstrap.css">
     9   <style>
    10     #target {
    11       padding: 20px;
    12       height: 300px;
    13       border: 5px dashed #c0c0c0;
    14       color: #e0e0e0;
    15       font-size: 40px;
    16       line-height: 260px;
    17       text-align: center;
    18       -webkit-user-select: none;
    19       cursor: pointer;
    20     }
    21     
    22     #target.actived {
    23       border-color: #888;
    24       color: #eaeaea;
    25       box-shadow: 0 0 80px #e0e0e0 inset;
    26     }
    27   </style>
    28 </head>
    29 
    30 <body>
    31   <div class="container">
    32     <div class="page-header">
    33       <h1>Drag&Drop</h1></div>
    34     <div class="jumbotron">
    35       <p>你好啊,你今年几岁啊,哈哈,我的今天在哪里</p>
    36       <img src="toy.png" alt="">
    37     </div>
    38       <ul id="result" class="list-group"></ul>
    39     <div id="target">
    40       Drag something into here
    41     </div>
    42   </div>
    43   <script>
    44     (function(){
    45       //找到目标事件框
    46       var target=document.querySelector('#target');
    47       var fileList=document.querySelector('#result');
    48       //注册拖拽进入
    49       target.addEventListener('dragenter',function(){
    50         this.classList.add('actived');//添加类名
    51       });
    52       //注册拖拽离开
    53       target.addEventListener('dragleave',function(){
    54         this.classList.remove('actived');//添加类名
    55       });
    56       //如果要捕获drop事件,就一定要在该事件中阻止默认事件
    57       target.addEventListener('dragover',function(e){
    58         e.preventDefault();//阻止默认事件
    59         e.stopPropagation();//阻止冒泡
    60       });
    61 
    62       //当元素放到该对象上时
    63       target.addEventListener('drop',function(e){
    64         if(e.dataTransfer.files.length){
    65           var files=e.dataTransfer.files;
    66           for(var i=0;i<files.length;i++){
    67             var li=document.createElement('li');
    68             li.setAttribute('class','list-group-item');
    69             //创建信息的子节点
    70             li.innerHTML='<h5 class="list-group-item-heading">'+files[i].name+'</h5><p class="list-group-item-text">'+files[i].lastModifiedDate.toLocaleDateString()+' '+files[i].lastModifiedDate.toLocaleTimeString()+' '+(files[i].size/1024).toFixed(2)+'KB</p>';
    71             fileList.appendChild(li);
    72           }
    73         }else {
    74 
    75           //短路运算
    76           //var data= e.dataTransfer.getData('text/plain')||e.dataTransfer.getData('text/uri-list');
    77           var uri = e.dataTransfer.getData('text/uri-list');
    78           var text = e.dataTransfer.getData('text/plain');
    79           if (uri) {
    80             var img = document.createElement('img');
    81             img.setAttribute('src', uri);
    82             target.appendChild(img);
    83           } else if (text) {
    84             var textNode = document.createTextNode(text);
    85             target.appendChild(textNode);
    86           }
    87         }
    88           this.classList.remove('actived');//添加类名
    89 
    90         e.preventDefault();
    91         e.stopPropagation();
    92         console.log(e);
    93       });
    94 
    95     })();
    96   </script>
    97 </body>
    98 
    99 </html>
  • 相关阅读:
    在eclipse中API的封装和调用
    冒泡排序
    java中阻止类的继承
    java中数组复制的两种方式
    ssh框架搭建出现的异常: class com.my.entity.user not found while looking for property: id
    ssh框架中struts.xml 的配置参数详解
    线程的五种状态
    Sql Server 分页
    window.opener 子窗体操作父窗体
    贪心算法--汽车加油问题
  • 原文地址:https://www.cnblogs.com/le220/p/7862449.html
Copyright © 2020-2023  润新知