簡體   English   中英

我在拖放中停止了什么傳播?

[英]What propagation I'm stopping in drag and drop?

遵循MDN指南, 使用拖放選擇文件 ,代碼為:

var dropbox;

dropbox = document.getElementById("dropbox");
dropbox.addEventListener("dragenter", dragenter, false);
dropbox.addEventListener("dragover", dragover, false);
dropbox.addEventListener("drop", drop, false);

function dragenter(e) {
  e.stopPropagation();
  e.preventDefault();
}

function dragover(e) {
  e.stopPropagation();
  e.preventDefault();
}

function drop(e) {
  e.stopPropagation();
  e.preventDefault();

  var dt = e.dataTransfer;
  var files = dt.files;

  handleFiles(files);
}

我知道我必須使用preventDefault()來避免瀏覽器打開我刪除的文件。 但是,為什么我必須使用stopPropagation() 我要在這里停下來冒泡嗎?

它的意思是“如果DOM中有任何包含“ dropbox” id元素的元素,並附加了匹配的命名事件處理程序函數,則不會通知該事件。

DOM上的Mozilla javascript文檔中有一個很好的例子

它有一個包含表數據單元格的html表,這兩個表都附加了事件處理程序。 如果刪除ev.stopPropogation()(在第17行),則將調用兩個事件處理程序函數,並在那里調用,僅調用表單元格事件處理程序。

-

在event.stopPropagation和event.preventDefault之間有什么區別?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM