gpt4 book ai didi

javascript - 为什么 preventDefault 不起作用?

转载 作者:搜寻专家 更新时间:2023-11-01 04:49:04 25 4
gpt4 key购买 nike

这是我的代码的一部分。如果我尝试将图像放在 block 上,preventDefault 不起作用。

        jQuery(document).ready(function($) {
$.event.props.push('dataTransfer');
$('#imgDropzone').on({
dragenter: function(e) {
$(this).css('background-color', '#ffd1ff');
},
dragleave: function(e) {
$(this).css('background-color', '');
},
drop: function(e) {
e.stopPropagation();
e.preventDefault();

var file = e.dataTransfer.files[0];
var fileReader = new FileReader();
var el = $(this);
fileReader.onload = (function(file) {
return function(event) {
alert(event.target.result);
};
})(file);
fileReader.readAsDataURL(file);
}
});
});

http://jsfiddle.net/LrmDw/

最佳答案

您还需要* 来防止所有其他拖动事件的默认设置:

参见 http://jsfiddle.net/LrmDw/2/

$('#imgDropzone').on("dragenter dragstart dragend dragleave dragover drag drop", function (e) {
e.preventDefault();
});

解释原始 jsfiddle 中什么不起作用:

当您将文件拖放到拖放区(或页面中的任何位置)时,浏览器的默认行为是导航离开并尝试解释该文件。如果你放下一个普通的txt 文件,浏览器将离开 jsfiddle 并显示 txt 文件的内容。这是在 Chrome 中。


顺便说一句,base64 url​​ 是不可取的,因为它们会重复数据。只需获取一个指向文件的 blob 指针并使用它:

var file = e.dataTransfer.files[0];
var src = (window.URL || window.webkitURL).createObjectURL(file);
$("<img>", {src: src}).appendTo("body");

http://jsfiddle.net/LrmDw/3/

我不知 Prop 体是哪些,但我从来不用关心

关于javascript - 为什么 preventDefault 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14674349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com