簡體   English   中英

拖放doenst不起作用:'dropEffect'未定義

[英]Drag & Drop doenst not work: 'dropEffect' of undefined

未捕獲的TypeError:無法設置undefined main.js的屬性'dropEffect'
未捕獲的TypeError:無法讀取未定義的屬性“文件”

這里有什么不對

。咖啡

$ ->
  app = new Viewr

class Viewr

  constructor: () ->
    $('#drop_zone')
    .bind('dragover', @handleDragOver)
    .bind('drop', @handleDrop)

  handleDrop: (evt) ->
    evt.stopPropagation()
    evt.preventDefault()
    files = evt.dataTransfer.files

    @setActiveImage files[0]

  handleDragOver: (evt) ->
    evt.stopPropagation()
    evt.preventDefault()
    evt.dataTransfer.dropEffect = "copy"

  setActiveImage: (image)->
    $("img").attr "src", src

.HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
    <div id="drop_zone" style="width: 100px; height: 100px; border: 2px dashed #bbb;
                                 -moz-border-radius: 5px;
                                 -webkit-border-radius: 5px;
                                 border-radius: 5px;
                                 padding: 25px;
                                 text-align: center;
                                 color: #bbb;">Drop files here</div>
</body>
<script type="text/javascript" src="js/lib/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</html>

我認為問題可能是你正在使用'dragover''drop'事件而不是本機drop事件。 正如您在此處所看到的,它提到必須將DataTransfer對象添加到jQuery事件對象:

OtherProperties

某些事件可能具有特定於它們的屬性。 這些可以作為event.originalEvent對象的屬性進行訪問。 要在所有事件對象中提供特殊屬性,可以將它們添加到jQuery.event.props數組中。 建議不要這樣做,因為它會增加jQuery提供的每個事件的開銷。

例:

 // add the dataTransfer property for use with the native `drop` event // to capture information about files dropped into the browser window jQuery.event.props.push("dataTransfer"); 

你最好的選擇可能是訪問originalEvent對象,所以看看這是否有效:

handleDrop: (evt) ->
    evt.stopPropagation()
    evt.preventDefault()
    files = evt.originalEvent.dataTransfer.files

handleDragOver: (evt) ->
    evt.stopPropagation()
    evt.preventDefault()
    evt.originalEvent.dataTransfer.dropEffect = "copy"

暫無
暫無

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

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