Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日韩一区二区在线观看,中文字幕资源在线,最近的最新的中文字幕在线

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          JavaScript HTML5拖拽/拖放

          簡(jiǎn)介】

          拖放是一種常見(jiàn)的特性, 屬于html5標(biāo)準(zhǔn)的一部分, 即抓取對(duì)象以后拖動(dòng)到另一個(gè)位置, 在html5中, 任何元素都可被設(shè)置拖放。首先, 我們要給需要拖動(dòng)的HTML元素啟用拖動(dòng)功能, 設(shè)置屬性draggable="true",

          <div draggable="true"></div>

          提示:a標(biāo)簽和img標(biāo)簽?zāi)J(rèn)是啟用該屬性的, 可不需要設(shè)置draggable屬性。

          draggable有三個(gè)值, 如下所示:

          draggable = true(元素可以被拖動(dòng))

          draggable = false(元素不能被拖動(dòng))

          draggable = auto(瀏覽器可以自主決定某個(gè)元素是否可以被拖動(dòng))

          【用法】

          當(dāng)我們用鼠標(biāo)拖拽目標(biāo)元素過(guò)程中會(huì)觸發(fā)的事件:

          ondragstart:用戶(hù)按下鼠標(biāo)開(kāi)始拖動(dòng)時(shí)觸發(fā)

          ondrag:用戶(hù)正在拖動(dòng)時(shí)反復(fù)觸發(fā)

          ondragend:用戶(hù)結(jié)束拖動(dòng)后觸發(fā)

          <img id="imgs" ondragstart="startFun()" ondrag="ondragFun()" ondragend="ondragendFun()" src="../img/a.png"/>

          當(dāng)拖動(dòng)元素進(jìn)入目標(biāo)容器內(nèi)觸發(fā)的事件:

          ondragenter:鼠標(biāo)拖動(dòng)對(duì)象進(jìn)入釋放區(qū)時(shí)觸發(fā)

          ondragover:被拖動(dòng)物體進(jìn)入目標(biāo)容器內(nèi)移動(dòng)時(shí)反復(fù)觸發(fā)

          ondragleave:拖動(dòng)對(duì)象在釋放區(qū)沒(méi)有釋放就離開(kāi)容器時(shí)觸發(fā)

          ondrop:被拖動(dòng)物體在目標(biāo)容器內(nèi)釋放時(shí)觸發(fā)

          <div id="container" ondragenter="ondragenterFun(event)" ondragover="ondragoverFun(event)" ondragleave="ondragleaveFun()" ondrop="drop()"></div>

          ondragenter和ondragover事件的默認(rèn)行為是拒絕接受任何被拖放的項(xiàng)目, 所以我們必須要做的最重要的事情就是防止這種默認(rèn)行為的發(fā)生。

          因此, 我們只需要在這兩個(gè)事件調(diào)用的函數(shù)中傳入event對(duì)象, 使用event.preventDefault()就可取消這種默認(rèn)行為;舉個(gè)例子, 在drop事件時(shí), Firefox瀏覽器會(huì)關(guān)閉網(wǎng)頁(yè), 轉(zhuǎn)而顯示被拖動(dòng)圖片img元素src所引用的地址。

          取消元素默認(rèn)行為:

          function ondragenterFun(e){
              e.preventDefault();
          }
          function ondragoverFun(e){
              e.preventDefault();
          }

          在event對(duì)象中, 我們會(huì)使用dataTransfer屬性來(lái)獲取DataTransfer對(duì)象, 在DataTransfer對(duì)象中有我們操作數(shù)據(jù)的屬性和方法, 具體如下:

          datatransfer:轉(zhuǎn)移釋放元素的數(shù)據(jù)到釋放區(qū), 返回Datatransfer對(duì)象

          event.dataTransfer //返回DataTransfer對(duì)象

          DataTransfer對(duì)象的屬性:

          files:處理從操作系統(tǒng)拖動(dòng)并釋放到釋放區(qū)的文件;

          types:返回一個(gè)字符串?dāng)?shù)組, 該對(duì)象包含了dataTransfer對(duì)象中數(shù)據(jù)的所有類(lèi)型;

          items:返回DataTransferItems對(duì)象, 該對(duì)象代表了拖動(dòng)數(shù)據(jù);

          dropEffect:設(shè)置拖放目標(biāo)允許發(fā)生的拖放行為, 如果此處設(shè)置的拖放行為不在effectAllowed屬性設(shè)置的可拖放行為內(nèi), 拖放操作將會(huì)失敗。該屬性值只允許為"null"、"copy"、"link"或"move";

          effectAllowed:設(shè)置拖動(dòng)元素允許發(fā)生的拖動(dòng)行為, 該屬性值可為"none"、"copy"、"copyLink"、"copyMove"、"link"、"linkMove"、"move"、"all"或"uninitialized";

          DataTransfer對(duì)象的方法:

          setData( format , data ):將指定格式的數(shù)據(jù)賦值給dataTransfer對(duì)象,參數(shù)format定義數(shù)據(jù)的格式也就是數(shù)據(jù)的類(lèi)型,data為待賦值的數(shù)據(jù)。

          getData( format ):從dataTransfer對(duì)象中獲取指定格式的數(shù)據(jù),format代表數(shù)據(jù)格式,data為數(shù)據(jù)。

          clearData( [format] ):從dataTransfer對(duì)象中刪除指定格式的數(shù)據(jù),參數(shù)可選,若不給參數(shù),將刪除對(duì)象中所有的數(shù)據(jù)。

          setDragImage(el, x, y):設(shè)置拖放操作的圖標(biāo),其中el代表自定義圖標(biāo),x代表圖標(biāo)與鼠標(biāo)在水平方向上的距離,y代表圖標(biāo)與鼠標(biāo)在垂直方向上的距離。


          了解了H5拖動(dòng)使用的api以后我們接下來(lái)看一個(gè)綜合的案例, 功能如下:

          1)、實(shí)現(xiàn)圖片拖動(dòng)功能;

          2)、實(shí)現(xiàn)圖片復(fù)制功能;

          3)、過(guò)濾不能拖動(dòng)的元素;

          4)、實(shí)現(xiàn)拖動(dòng)本地圖片到瀏覽器指定位置;

          公共css部分:

          <style>
          #dropIn{
          border:1px solid #AAAAAA;
          height:100px;
          margin-bottom: 10px;
          padding: 10px;
          }
          #dropIn>img{
          margin-right: 10px;
          border:2px solid deepskyblue;
          }
          img{
          width:100px;
          border-radius: 10px;
          border:2px solid red;
          }
          </style>

          html部分:

          <body>
          <div id="dropIn"></div> <!--釋放區(qū)-->
          <img id="drop1" src="img/a.png" alt="" />
          <!--拖動(dòng)的圖片元素-->
          </body>

          js部分:

          <script type="text/javascript">
          var darggID;
          function getId(el){
              return document.getElementById(el)
          }
          var dropId1 = getId("drop1");
          var dropInId = getId("dropIn");
          //取消事件默認(rèn)行為
          dropInId.ondragenter = cancelDefault;
          dropInId.ondragover = cancelDefault; //綁定拖動(dòng)元素釋放時(shí)觸發(fā)的事件
          dropInId.ondrop = drop; //綁定
          dropId1.ondragstart = startFun;
          function cancelDefault(ev){ //取消默認(rèn)行為
              ev.preventDefault();
          }
          function startFun(ev){
              darggID = ev.target.id;
              //獲取被拖動(dòng)元素的id
              //從源對(duì)象上的事件處理中保存數(shù)據(jù),數(shù)據(jù)類(lèi)型為"Text"
              ev.dataTransfer.setData("Text",darggID);
          }
          function drop(ev){
              ev.preventDefault();
              // 從目標(biāo)對(duì)象上的事件處理中讀取"Text"類(lèi)型數(shù)據(jù)
              var data=ev.dataTransfer.getData("Text");
              // 插入到目標(biāo)對(duì)象中
              ev.target.appendChild(document.getElementById(data));
          }
          </script>

          接下來(lái)我們添加兩張圖, "drop2"是實(shí)現(xiàn)復(fù)制的圖片, "drop3"是既不能復(fù)制也不能拖動(dòng)的圖片;

          <img id="drop2" src="img/b.png" alt="" /><img id="drop3" src="img/c.png" alt="" />

          添加js代碼:

          //獲取頁(yè)面元素
          var dropId2 = getId("drop2");
          var dropId3 = getId("drop3");
          //綁定事件
          dropId2.ondragstart = startFun;dropId3.ondragstart = startFun;
          //修改drop函數(shù)為
          function drop(ev){
              ev.preventDefault();
              // 從目標(biāo)對(duì)象上的事件處理中讀取"Text"類(lèi)型數(shù)據(jù)
              var data=ev.dataTransfer.getData("Text");
              if(data=='drop1'){
              //移動(dòng)
                  ev.target.appendChild(document.getElementById(data));
              }
              if(data=='drop2'){//復(fù)制
                  var nreEl=document.getElementById(darggID).cloneNode(false);
                  getId("dropIn").appendChild(nreEl);
              }
              if(data=='drop3'){//過(guò)濾drop3,drop3不做任何操作
                  alert('過(guò)濾drop3')
              }
          }

          接下來(lái)我們實(shí)現(xiàn)拖動(dòng)本地圖片到瀏覽器, 我們就將圖片拖動(dòng)到id為"dropIn"的這個(gè)div中;添加js:

          /*document 監(jiān)聽(tīng)drop 并阻止瀏覽器打開(kāi)客戶(hù)端的圖片*/
          document.ondragover = function (e) {
              //只有在ondragover中阻止默認(rèn)行為
              e.preventDefault();
          };
          document.ondrop = function (e) {
              //阻止 document.ondrop的默認(rèn)行為
              e.preventDefault();
          };
          //dropIn是div的id
          dropIn.ondrop = function (e) {
              var list = e.dataTransfer.files;
              for (var i = 0; i < list.length; i++) {
              var f = list[i];
                  reader(f);
              }
          };
          function reader(f) {
              var reader = new FileReader();
              //讀取數(shù)據(jù)
              reader.readAsDataURL(f);
              reader.onload = function () {
              var img = new Image();
              img.src = reader.result;
              dropIn.appendChild(img);
              }
          }

          【瀏覽器支持】

          目前只有Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari5支持拖放,在 Safari5.1.2 中不支持拖放。

          最后再和大家分享一個(gè)技巧, 這種拖動(dòng)行為還能跨瀏覽器工作, 這里說(shuō)的跨瀏覽器不是瀏覽器之間的跨窗口, 而是可以從Chrome瀏覽器拖動(dòng)到Firefox瀏覽器, 因?yàn)橥戏殴δ艿闹С质羌稍诓僮飨到y(tǒng)里面的, 有著相同的特性。

          節(jié)我們學(xué)習(xí) HTML5 中的拖放,拖放是一種常見(jiàn)的特性,也就是抓取對(duì)象以后拖到另一個(gè)位置。在 HTML5 中,拖放是標(biāo)準(zhǔn)的一部分,任何元素都能夠拖放。

          拖放事件

          拖放是由拖動(dòng)與釋放兩部分組成,拖放事件也分為被拖動(dòng)元素的相關(guān)事件,和容器的相關(guān)事件。

          被拖動(dòng)元素的相關(guān)事件如下所示:



          容器相關(guān)事件如下所示:



          如何實(shí)現(xiàn)元素的拖放

          我們通過(guò)上述的拖放事件來(lái)實(shí)現(xiàn)將下圖“你好,俠課島”,拖放到上面的矩形框中的演示效果:


          • 首先創(chuàng)建一個(gè)HTML文本,用于測(cè)試代碼,如下所示:
          <!DOCTYPE html>
              <html>
                  <head>
                      <meta charset="utf-8">
                      <title>HTML5學(xué)習(xí)(9xkd.com)</title>
                      <style type="text/css">
                          .div1{
                              width:200px;
                              height:100px;
                              padding:20px;
                              border:1px solid #000;
                          }
                          p{
                              font-size: 28px;
                          }
                      </style>
                  </head>
                  <body>
                      <div>
                          <div class="div1" id="div1" ></div>
                          <p id="drag1">你好,俠課島!</p>
                      </div>
                  </body>
              </html>
          
          • 然后,我們要給被拖動(dòng)元素(也就是在上述的 <p> 標(biāo)簽上),設(shè)置一個(gè) draggable 屬性,此屬性用于規(guī)定元素是否可拖動(dòng),當(dāng)屬性值為 true 時(shí)表示元素可拖動(dòng),為 false 表示元素不可拖動(dòng)。
          <p id="drag1" draggable="true">你好,俠課島!</p>
          

          只有設(shè)置了 draggable 屬性值為 true ,指定元素才能被拖動(dòng)。

          • 然后,我們要做的是點(diǎn)擊被拖動(dòng)元素 “你好,俠課島!”,點(diǎn)擊這個(gè)元素時(shí)需要觸發(fā)一個(gè) ondragstart 事件,ondragstart 事件會(huì)在用戶(hù)開(kāi)始拖動(dòng)元素或選擇的文本時(shí)觸發(fā)。調(diào)用了一個(gè) drag(event) 函數(shù),在這個(gè)函數(shù)中規(guī)定被拖動(dòng)的數(shù)據(jù),如下所示:
          function drag(e){
              e.dataTransfer.setData("Text", e.target.id);
          }
          

          代碼中的 dataTransfer.setData() 方法用于設(shè)置被拖數(shù)據(jù)的數(shù)據(jù)類(lèi)型和值。參數(shù) Text 表示被拖動(dòng)數(shù)據(jù)的數(shù)據(jù)類(lèi)型,參數(shù) e.target.id 是可拖動(dòng)元素的 id。

          • 接著,我們將要 “你好,俠課島!” 拖動(dòng)到元素容器范圍內(nèi)(矩形框中)。要實(shí)現(xiàn)這個(gè)步驟,需要在放置拖動(dòng)元素的容器上綁定一個(gè) ondragover 事件,這個(gè)事件用于規(guī)定在何處放置被拖動(dòng)的數(shù)據(jù)。默認(rèn)情況下,是無(wú)法將一格元素放置到另外一個(gè)元素里面的,所以如果需要設(shè)置允許放置,則要在 ondragover 事件中加上 e.preventDefault() 方法來(lái)阻止默認(rèn)行為。
          function allowDrop(e){
              e.preventDefault();
          }
          
          • 最后,就是要放置被拖動(dòng)元素,也就是要在元素容器范圍內(nèi)松開(kāi)鼠標(biāo)。需要在元素容器上綁定一個(gè) ondrop 事件,如下所示,這個(gè)事件會(huì)在拖動(dòng)過(guò)程中釋放鼠標(biāo)鍵時(shí)觸發(fā)。
          <div id="div1" class="div1" ondrop="drop(event)" ondragover="allowDrop(event)" ></div>
          
          <script>
              function drop(e){
                  e.preventDefault();
                  var data = e.dataTransfer.getData("Text");
                  e.target.appendChild(document.getElementById(data));
              }
          </script>
          

          在 ondrop 事件中同樣需要調(diào)用 e.preventDefault() 方法來(lái)阻止默認(rèn)行為。然后可以通過(guò) dataTransfer.getData("Text"); 方法獲取之前的 drag(event) 函數(shù)中保存的信息,也就是被拖動(dòng)元素的 id。接著通過(guò) target.appendChild() 方法為將拖動(dòng)元素作為元素容器的子元素追加到元素容器中,這樣就能成功實(shí)現(xiàn)拖放。

          完整代碼

          完整代碼如下所示:

          <!DOCTYPE html>
              <html>
                  <head>
                      <meta charset="utf-8">
                      <title>HTML5學(xué)習(xí)(9xkd.com)</title>
                      <style type="text/css">
                          .div1{
                              width:200px;
                              height:100px;
                              padding:20px;
                              border:1px solid #000;
                          }
                          p{
                              font-size: 28px;
                          }
                      </style>
                  </head>
                  <body>
                      <div>
                          <div id="div1" class="div1" ondrop="drop(event)" ondragover="allowDrop(event)" ></div>
                          <p id="drag1" draggable="true" ondragstart="drag(event)">你好,俠課島!</p>
                      </div>
                      <script>
                          function drag(e){
                              e.dataTransfer.setData("Text", e.target.id);
                          }
                          function allowDrop(e){
                              e.preventDefault();
                          }
                          function drop(e){
                              e.preventDefault();
                              var data = e.dataTransfer.getData("Text");
                              e.target.appendChild(document.getElementById(data));
                          }
                      </script>
                  </body>
              </html>
          

          總結(jié)

          當(dāng)我們要對(duì)某個(gè)元素實(shí)行拖放操作時(shí),首先就需將這個(gè)元素的 draggable 屬性設(shè)置為 true,表示允許元素拖動(dòng)。其中圖片和鏈接默認(rèn)是可拖動(dòng)的,不需設(shè)置要 draggable 屬性。

          鏈接:https://www.9xkd.com/

          簡(jiǎn)介】

          拖放是一種常見(jiàn)的特性, 屬于html5標(biāo)準(zhǔn)的一部分, 即抓取對(duì)象以后拖動(dòng)到另一個(gè)位置, 在html5中, 任何元素都可被設(shè)置拖放。首先, 我們要給需要拖動(dòng)的HTML元素啟用拖動(dòng)功能, 設(shè)置屬性draggable="true",

          <div draggable="true"></div>

          提示:a標(biāo)簽和img標(biāo)簽?zāi)J(rèn)是啟用該屬性的, 可不需要設(shè)置draggable屬性。

          draggable有三個(gè)值, 如下所示:

          draggable = true(元素可以被拖動(dòng))

          draggable = false(元素不能被拖動(dòng))

          draggable = auto(瀏覽器可以自主決定某個(gè)元素是否可以被拖動(dòng))

          【用法】

          當(dāng)我們用鼠標(biāo)拖拽目標(biāo)元素過(guò)程中會(huì)觸發(fā)的事件:

          ondragstart:用戶(hù)按下鼠標(biāo)開(kāi)始拖動(dòng)時(shí)觸發(fā)

          ondrag:用戶(hù)正在拖動(dòng)時(shí)反復(fù)觸發(fā)

          ondragend:用戶(hù)結(jié)束拖動(dòng)后觸發(fā)

          <img id="imgs" ondragstart="startFun()" ondrag="ondragFun()" ondragend="ondragendFun()" src="../img/a.png"/>

          當(dāng)拖動(dòng)元素進(jìn)入目標(biāo)容器內(nèi)觸發(fā)的事件:

          ondragenter:鼠標(biāo)拖動(dòng)對(duì)象進(jìn)入釋放區(qū)時(shí)觸發(fā)

          ondragover:被拖動(dòng)物體進(jìn)入目標(biāo)容器內(nèi)移動(dòng)時(shí)反復(fù)觸發(fā)

          ondragleave:拖動(dòng)對(duì)象在釋放區(qū)沒(méi)有釋放就離開(kāi)容器時(shí)觸發(fā)

          ondrop:被拖動(dòng)物體在目標(biāo)容器內(nèi)釋放時(shí)觸發(fā)

          <div id="container" ondragenter="ondragenterFun(event)" ondragover="ondragoverFun(event)" ondragleave="ondragleaveFun()" ondrop="drop()"></div>

          ondragenter和ondragover事件的默認(rèn)行為是拒絕接受任何被拖放的項(xiàng)目, 所以我們必須要做的最重要的事情就是防止這種默認(rèn)行為的發(fā)生。

          因此, 我們只需要在這兩個(gè)事件調(diào)用的函數(shù)中傳入event對(duì)象, 使用event.preventDefault()就可取消這種默認(rèn)行為;舉個(gè)例子, 在drop事件時(shí), Firefox瀏覽器會(huì)關(guān)閉網(wǎng)頁(yè), 轉(zhuǎn)而顯示被拖動(dòng)圖片img元素src所引用的地址。

          取消元素默認(rèn)行為:

          function ondragenterFun(e){

          e.preventDefault();

          }

          function ondragoverFun(e){

          e.preventDefault();

          }

          在event對(duì)象中, 我們會(huì)使用dataTransfer屬性來(lái)獲取DataTransfer對(duì)象, 在DataTransfer對(duì)象中有我們操作數(shù)據(jù)的屬性和方法, 具體如下:

          datatransfer:轉(zhuǎn)移釋放元素的數(shù)據(jù)到釋放區(qū), 返回Datatransfer對(duì)象

          event.dataTransfer //返回DataTransfer對(duì)象

          DataTransfer對(duì)象的屬性:

          files:處理從操作系統(tǒng)拖動(dòng)并釋放到釋放區(qū)的文件;

          types:返回一個(gè)字符串?dāng)?shù)組, 該對(duì)象包含了dataTransfer對(duì)象中數(shù)據(jù)的所有類(lèi)型;

          items:返回DataTransferItems對(duì)象, 該對(duì)象代表了拖動(dòng)數(shù)據(jù);

          dropEffect:設(shè)置拖放目標(biāo)允許發(fā)生的拖放行為, 如果此處設(shè)置的拖放行為不在effectAllowed屬性設(shè)置的可拖放行為內(nèi), 拖放操作將會(huì)失敗。該屬性值只允許為"null"、"copy"、"link"或"move";

          effectAllowed:設(shè)置拖動(dòng)元素允許發(fā)生的拖動(dòng)行為, 該屬性值可為"none"、"copy"、"copyLink"、"copyMove"、"link"、"linkMove"、"move"、"all"或"uninitialized";

          DataTransfer對(duì)象的方法:

          setData( format , data ):將指定格式的數(shù)據(jù)賦值給dataTransfer對(duì)象,參數(shù)format定義數(shù)據(jù)的格式也就是數(shù)據(jù)的類(lèi)型,data為待賦值的數(shù)據(jù)。

          getData( format ):從dataTransfer對(duì)象中獲取指定格式的數(shù)據(jù),format代表數(shù)據(jù)格式,data為數(shù)據(jù)。

          clearData( [format] ):從dataTransfer對(duì)象中刪除指定格式的數(shù)據(jù),參數(shù)可選,若不給參數(shù),將刪除對(duì)象中所有的數(shù)據(jù)。

          setDragImage(el, x, y):設(shè)置拖放操作的圖標(biāo),其中el代表自定義圖標(biāo),x代表圖標(biāo)與鼠標(biāo)在水平方向上的距離,y代表圖標(biāo)與鼠標(biāo)在垂直方向上的距離。

          了解了H5拖動(dòng)使用的api以后我們接下來(lái)看一個(gè)綜合的案例, 功能如下:

          1)、實(shí)現(xiàn)圖片拖動(dòng)功能;

          2)、實(shí)現(xiàn)圖片復(fù)制功能;

          3)、過(guò)濾不能拖動(dòng)的元素;

          4)、實(shí)現(xiàn)拖動(dòng)本地圖片到瀏覽器指定位置;

          公共css部分:

          <style>

          #dropIn{

          border:1px solid #AAAAAA;

          height:100px;

          margin-bottom: 10px;

          padding: 10px;

          }

          #dropIn>img{

          margin-right: 10px;

          border:2px solid deepskyblue;

          }

          img{

          width:100px;

          border-radius: 10px;

          border:2px solid red;

          }

          </style>

          html部分:

          <body>

          <div id="dropIn"></div> <!--釋放區(qū)-->

          <img id="drop1" src="img/a.png" alt="" />

          <!--拖動(dòng)的圖片元素-->

          </body>

          js部分:

          <script type="text/javascript">
          var darggID;
          function getId(el){
          return document.getElementById(el)
          }
          var dropId1 = getId("drop1");
          var dropInId = getId("dropIn");
          //取消事件默認(rèn)行為
          dropInId.ondragenter = cancelDefault;
          dropInId.ondragover = cancelDefault; //綁定拖動(dòng)元素釋放時(shí)觸發(fā)的事件
          dropInId.ondrop = drop; //綁定
          dropId1.ondragstart = startFun;
          function cancelDefault(ev){ //取消默認(rèn)行為
          ev.preventDefault();
          }
          function startFun(ev){
          darggID = ev.target.id;
          //獲取被拖動(dòng)元素的id
          //從源對(duì)象上的事件處理中保存數(shù)據(jù),數(shù)據(jù)類(lèi)型為"Text"
          ev.dataTransfer.setData("Text",darggID);
          }
          function drop(ev){
          ev.preventDefault();
          // 從目標(biāo)對(duì)象上的事件處理中讀取"Text"類(lèi)型數(shù)據(jù)
          var data=ev.dataTransfer.getData("Text");
          // 插入到目標(biāo)對(duì)象中
          ev.target.appendChild(document.getElementById(data));
          }
          </script>

          接下來(lái)我們添加兩張圖, "drop2"是實(shí)現(xiàn)復(fù)制的圖片, "drop3"是既不能復(fù)制也不能拖動(dòng)的圖片;

          <img id="drop2" src="img/b.png" alt="" /><img id="drop3" src="img/c.png" alt="" />

          添加js代碼:

          //獲取頁(yè)面元素

          var dropId2 = getId("drop2");

          var dropId3 = getId("drop3");

          //綁定事件

          dropId2.ondragstart = startFun;dropId3.ondragstart = startFun;

          //修改drop函數(shù)為

          function drop(ev){

          ev.preventDefault();

          // 從目標(biāo)對(duì)象上的事件處理中讀取"Text"類(lèi)型數(shù)據(jù)

          var data=ev.dataTransfer.getData("Text");

          if(data=='drop1'){

          //移動(dòng)

          ev.target.appendChild(document.getElementById(data));

          }

          if(data=='drop2'){//復(fù)制

          var nreEl=document.getElementById(darggID).cloneNode(false);

          getId("dropIn").appendChild(nreEl);

          }

          if(data=='drop3'){//過(guò)濾drop3,drop3不做任何操作

          alert('過(guò)濾drop3')

          }

          }

          接下來(lái)我們實(shí)現(xiàn)拖動(dòng)本地圖片到瀏覽器, 我們就將圖片拖動(dòng)到id為"dropIn"的這個(gè)div中;添加js:

          /*document 監(jiān)聽(tīng)drop 并阻止瀏覽器打開(kāi)客戶(hù)端的圖片*/

          document.ondragover = function (e) {

          //只有在ondragover中阻止默認(rèn)行為

          e.preventDefault();

          };

          document.ondrop = function (e) {

          //阻止 document.ondrop的默認(rèn)行為

          e.preventDefault();

          };

          //dropIn是div的id

          dropIn.ondrop = function (e) {

          var list = e.dataTransfer.files;

          for (var i = 0; i < list.length; i++) {

          var f = list[i];

          reader(f);

          }

          };

          function reader(f) {

          var reader = new FileReader();

          //讀取數(shù)據(jù)

          reader.readAsDataURL(f);

          reader.onload = function () {

          var img = new Image();

          img.src = reader.result;

          dropIn.appendChild(img);

          }

          }

          【瀏覽器支持】

          目前只有Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari5支持拖放,在 Safari5.1.2 中不支持拖放。

          最后再和大家分享一個(gè)技巧, 這種拖動(dòng)行為還能跨瀏覽器工作, 這里說(shuō)的跨瀏覽器不是瀏覽器之間的跨窗口, 而是可以從Chrome瀏覽器拖動(dòng)到Firefox瀏覽器, 因?yàn)橥戏殴δ艿闹С质羌稍诓僮飨到y(tǒng)里面的, 有著相同的特性。


          主站蜘蛛池模板: 国产综合一区二区| 国产成人精品一区二区秒拍| 亚洲国产一区二区三区青草影视| 精品无码一区二区三区爱欲| 日韩熟女精品一区二区三区| 在线成人一区二区| 精品亚洲AV无码一区二区三区| 亚洲熟女乱综合一区二区| 日韩精品免费一区二区三区| 亚洲熟妇av一区二区三区下载| 色狠狠色噜噜Av天堂一区| 无码精品人妻一区| 国产福利一区视频| 国产一区二区精品久久91| 欧美激情一区二区三区成人| 国产电影一区二区| 激情亚洲一区国产精品| 日韩在线不卡免费视频一区| 成人免费区一区二区三区| 精品国产日韩亚洲一区| aⅴ一区二区三区无卡无码| 四虎永久在线精品免费一区二区 | 国产福利视频一区二区| 视频在线一区二区| 天堂不卡一区二区视频在线观看 | 激情啪啪精品一区二区| 日本精品啪啪一区二区三区| 国产精品美女一区二区三区 | 久久久精品人妻一区亚美研究所 | 精品人妻中文av一区二区三区 | 国产精品盗摄一区二区在线| 精品久久综合一区二区| 尤物精品视频一区二区三区| 麻豆AV天堂一区二区香蕉| 国产激情一区二区三区在线观看| 在线一区二区三区| 国产成人高清精品一区二区三区 | 在线|一区二区三区四区| 免费国产在线精品一区| 久久亚洲色一区二区三区| 亚洲永久无码3D动漫一区|