1

Jquery:

$(document).ready(function () {
   $('input[type=file]').uploadImage();
   jQuery.event.props.push('dataTransfer');
   $(".upload-cont").bind('dragenter', function (e) {
      $(".upload-cont").css("border", "1px dashed black;");
   });
   $(".upload-cont").bind('drop', function (e) {
      var files = e.dataTransfer.files;
      e.preventDefault();
   });
   $("body").bind('drop', function (e) {
      e.preventDefault();
   });
});

Firefox 17では、エクスプローラー8で、デスクトップからブラウザーにファイルをドラッグアンドドロップすると、画像が別のページに読み込まれます。Chromeで完全に機能するpreventDefault()を追加しました。ff、つまりブラウザでアクションが防止されるようにするためにできること。

4

1 に答える 1

5

コードをに変更してみてください。

$('body').on('dragover drop', function(e){
    e.preventDefault();
});

特定のブラウザがドロップをリッスンするには、ドラッグオーバーイベントもキャンセルする必要があります。MDNを引用するには

dragenterイベントとdragoverイベントのリスナーは、有効なドロップターゲット、つまりドラッグされたアイテムがドロップされる可能性のある場所を示すために使用されます。Webページまたはアプリケーションのほとんどの領域は、データをドロップするための有効な場所ではありません。したがって、これらのイベントのデフォルトの処理では、ドロップを許可しません。

ドロップを許可する場合は、イベントをキャンセルしてデフォルトの処理を防ぐ必要があります。これを行うには、属性定義のイベントリスナーからfalseを返すか、イベントのevent.preventDefaultメソッドを呼び出します。後者は、別のスクリプトで定義された関数でより実行可能である可能性があります。

于 2013-01-11T16:28:57.827 に答える