когда я использовал HTML Drag and Drop API, перетаскивание не работало - PullRequest
0 голосов
/ 04 октября 2018

это мой код:

var dragged

    document.addEventListener("drag", function (event) {
    }, false)

    document.addEventListener("dragstart", function (event) {
      dragged = event.target
      event.target.style.opacity = .5
    }, false)

    document.addEventListener("dragend", function (event) {
      event.target.style.opacity = ""
    }, false)

    document.addEventListener("dragover", function (event) {
      event.preventDefault()
    }, false)

    document.addEventListener("dragenter", function (event) {
      if (event.target.className == "dropzone") {
        event.target.style.background = "purple"
      }

    }, false)

    document.addEventListener("dragleave", function (event) {
      if (event.target.className == "dropzone") {
        event.target.style.background = ""
      }

    }, false)

    document.addEventListener("drop", function (event) {
      event.preventDefault()
      if (event.target.className == "dropzone") {
        event.target.style.background = ""
        dragged.parentNode.removeChild(dragged)
        event.target.appendChild(dragged)
      }

    }, false)
   #draggable {
      width: 200px;
      height: 20px;
      text-align: center;
      background: white;
    }

    .dropzone {
      width: 200px;
      height: 20px;
      background: blueviolet;
      margin-bottom: 10px;
      padding: 10px;
    }
  <div class="dropzone ">
    <div id="draggable" draggable="true" ondragstart="event.dataTransfer.setData('text/plain',null)">
      this is draggable
    </div>
  </div>
  <div class="dropzone"></div>
  <div class="dropzone"></div>
  <div class="dropzone"></div>

Я хочу, чтобы текст в другие контейнеры div. перетаскивание текста в другой div

перетаскивание текста в другой div

но я могу перетащить div container.just вот так

ошибка

, хотя установлено draggable = 'false', я все еще могу перетаскивать контейнер div.

<div class="dropzone " draggable="false">
<div id="draggable" draggable="true"ondragstart="event.dataTransfer.setData('text/plain',null)">
    this is draggable
</div>
</div><div class="dropzone" draggable="false">
</div><div class="dropzone" draggable="false">
</div><div class="dropzone" draggable="false"></div>

Я использую Chrome и не вижу ошибокв консоли.

1 Ответ

0 голосов
/ 04 октября 2018

Вам не хватает user-select: none; в .dropzone классе.Проблема заключалась в том, что когда вы перетаскивали .dropzone в первый раз, он выбирал .dropzone и текст, который можно перетаскивать.При использовании user-select: none; на .dropzone он не выберет divzone.

Попробуйте.

var dragged

    document.addEventListener("drag", function (event) {
    }, false)

    document.addEventListener("dragstart", function (event) {
      dragged = event.target
      event.target.style.opacity = .5
    }, false)

    document.addEventListener("dragend", function (event) {
      event.target.style.opacity = ""
    }, false)

    document.addEventListener("dragover", function (event) {
      event.preventDefault()
    }, false)

    document.addEventListener("dragenter", function (event) {
      if (event.target.className == "dropzone") {
        event.target.style.background = "purple"
      }

    }, false)

    document.addEventListener("dragleave", function (event) {
      if (event.target.className == "dropzone") {
        event.target.style.background = ""
      }

    }, false)

    document.addEventListener("drop", function (event) {
      event.preventDefault()
      if (event.target.className == "dropzone") {
        event.target.style.background = ""
        dragged.parentNode.removeChild(dragged)
        event.target.appendChild(dragged)
      }

    }, false)
#draggable {
      width: 200px;
      height: 20px;
      text-align: center;
      background: white;
    }

    .dropzone {
      width: 200px;
      height: 20px;
      background: blueviolet;
      margin-bottom: 10px;
      padding: 10px;
      user-select: none;
    }
<div class="dropzone ">
    <div id="draggable" draggable="true" ondragstart="event.dataTransfer.setData('text/plain',null)">
      this is draggable
    </div>
  </div>
  <div class="dropzone"></div>
  <div class="dropzone"></div>
  <div class="dropzone"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...