拖拽-12.19

1.源元素事件(要拖拽的文件)

  dragStart - 當(dāng)鼠標(biāo)開始拖放時(shí)被觸發(fā)
  drag - 當(dāng)鼠標(biāo)拖放過程中被觸發(fā)
  dragend 當(dāng)鼠標(biāo)拖放結(jié)束時(shí)被觸發(fā)

2.目標(biāo)元素事件(要拖拽到哪里去)

  dragover - 當(dāng)鼠標(biāo)到達(dá)目標(biāo)元素被觸發(fā)签钩,會(huì)反復(fù)觸發(fā)
  dragenter - 當(dāng)鼠標(biāo)拖放進(jìn)入到目標(biāo)元素內(nèi)觸發(fā)
  drop - 當(dāng)鼠標(biāo)實(shí)現(xiàn)拖放效果時(shí)被觸發(fā)

HTML頁面默認(rèn)不允許拖放睁壁,稱之為HTML頁面的默認(rèn)行為
解決:在dragover的事件中組織默認(rèn)行為即可event.preventDefault();

3.dataTransfer對(duì)象(類似于window系統(tǒng)的剪切板功能)

  • 獲取到dataTransfer對(duì)象
    var trans = event.dataTransfer;

  • 設(shè)置數(shù)據(jù)

     setData(type,data)
     type:類型针饥,特指標(biāo)識(shí)(id)淘这,一般為字符串
     data:設(shè)置的數(shù)據(jù)內(nèi)容
    
  • 獲取數(shù)據(jù)
    getData(type);

  • 清除數(shù)據(jù)
    clearData(type)
    所有的數(shù)據(jù)內(nèi)容袁梗,存儲(chǔ)在瀏覽器內(nèi)存中鲁猩,當(dāng)使用完數(shù)據(jù)內(nèi)容時(shí),要清除
    代碼示例:

  • 從本地拖拽文件到頁面中

    <!doctypehtml>
    <html>
      <head lang="en">
        <meta charset="UTF-8">
        <title>實(shí)現(xiàn)從本地拖放圖片到頁面中</title>
        <style>
          div {
            width : 500px;
            height: 500px;
            border: 1px solid black;
            padding: 10px;
          }
       </style>
      </head>
      <body>
        <!-- TODO 目標(biāo)元素 -->
        <div id="d1"></div>
        <script>
          var d1 = document.getElementById("d1");
          d1.ondragover = function(event){
            event.preventDefault();
          }
          d1.ondrop = function(event){
            var dataTrans = event.dataTransfer;
            //獲取到從本地拖拽進(jìn)來的文件
            var files =   dataTrans.files[0];
            //創(chuàng)建文件讀取對(duì)象
            var reader = new FileReader();
            //讀取指定文件
            reader.readAsDataURL(files);
            //讀取完以后岖沛,顯示圖片
            reader.onload = function(){
              d1.innerHTML = "<img src="+reader.result+">";
            }
            //取消默認(rèn)事件
            event.preventDefault();
          }
        </script>
      </body>
    </html>
    
  • 實(shí)現(xiàn)左右拖拽

    <!doctypehtml>
    <html>
    <head>
      <title></title>
      <script type="text/javascript"> </script>
      <style type="text/css">
        #d1{
          width: 300px;
          height: 400px;
          border:1px solid black;
          float: left;
        }
        #d2{
          width: 300px;
          height: 400px;
          border:1px solid black;
          float: right;
        }
      </style>
     </head>
      <body>
        <div id="d1">
          <img id= "myImage" src="class.jpg"/>
        </div>
        <div id="d2"></div>
      </body>
        <script type="text/javascript">
          var myImage = document.getElementById("myImage");
          var d1 = document.getElementById("d1");
          var d2 = document.getElementById("d2");
          //在源元素的開始拖拽事件中獲取到圖片的src
          myImage.ondragstart = function(evevt){
            //獲取到DataTransfer對(duì)象
            event.dataTransfer.setData("Text",myImage.src);
          }
          //目標(biāo)元素的ondrop事件中暑始,將要拖拽的信息放到目標(biāo)元素中
          d1.ondrop = function(event){
            var ImgSrc = event.dataTransfer.getData("Text");
            d1.innerHTML = "<img src = "+ImgSrc+">";
            //離開目標(biāo)元素后,將目標(biāo)元素移除
            d2.ondragend = function(){
              d2.innerHTML = "";
            }
          }
           //組織頁面的默認(rèn)行為婴削,默認(rèn)是不允許拖放的廊镜,必須在ondragover里面組織
          d1.ondragover = function(event){
            event.preventDefault();
          }
          d2.ondrop = function(event){
          var ImgSrc = event.dataTransfer.getData("Text");
          d2.innerHTML = "<img src="+ImgSrc+">";
          d1.ondragend = function(){
            d1.innerHTML = "";
          }
        }
        d2.ondragover = function(event){
          event.preventDefault();
        }
      </script>
    </html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唉俗,隨后出現(xiàn)的幾起案子嗤朴,更是在濱河造成了極大的恐慌,老刑警劉巖虫溜,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雹姊,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡衡楞,警方通過查閱死者的電腦和手機(jī)吱雏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘾境,“玉大人歧杏,你說我怎么就攤上這事∶允兀” “怎么了犬绒?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)兑凿。 經(jīng)常有香客問我凯力,道長(zhǎng),這世上最難降的妖魔是什么礼华? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任沮协,我火速辦了婚禮,結(jié)果婚禮上卓嫂,老公的妹妹穿的比我還像新娘。我一直安慰自己聘殖,他們只是感情好晨雳,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布行瑞。 她就那樣靜靜地躺著,像睡著了一般餐禁。 火紅的嫁衣襯著肌膚如雪血久。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天帮非,我揣著相機(jī)與錄音氧吐,去河邊找鬼。 笑死末盔,一個(gè)胖子當(dāng)著我的面吹牛筑舅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陨舱,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼翠拣,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了游盲?” 一聲冷哼從身側(cè)響起误墓,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎益缎,沒想到半個(gè)月后谜慌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莺奔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年欣范,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弊仪。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熙卡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出励饵,到底是詐尸還是另有隱情驳癌,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布役听,位于F島的核電站颓鲜,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏典予。R本人自食惡果不足惜甜滨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘤袖。 院中可真熱鬧衣摩,春花似錦、人聲如沸捂敌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泡嘴,卻和暖如春甫恩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背酌予。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工磺箕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抛虫。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓松靡,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親莱褒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子击困,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容