给ondragend设置了preventDefault(),为什么结束拖拽时还会打开新页面

给ondragend设置了preventDefault(),为什么结束拖拽时还会打开新页面

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

<style>

.container {

      width: 200px;

      height: 200px;

      background-color: yellow;

    }

    .containerDrop {

      background-color: green;

    }

    .target {

      width: 100px;

      height: 100px;

      background-color: pink;

    }

    .hide {

      display: none;

    }

</style>


<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>

</head>

<body>

  <div id="container" class="container"></div>

  <div id="target" class="target" draggable="true"></div>

  <img id="image" src="imooc.png" class="hide" />

</body>

</html>

<script>

$(function(){

/* 放下时 */

$("#container")[0].ondrop = function(e){

e.preventDefault();

var id = e.dataTransfer.getData("Text");

$(this).append($('#' + id));

}

/* 进入时 */

$("#container")[0].ondragenter = function(e){

e.preventDefault();

$(this).addClass("containerDrop")

}

/* 离开时 */

$("#container")[0].ondragleave = function(e){

e.preventDefault();

$(this).removeClass("containerDrop");

}

/* 结束时 */

$("#container")[0].ondragover = function(e){

e.preventDefault();

}


/* 开始拖拽 */

$("#target")[0].ondragstart = function(e){

e.dataTransfer.setData("Text",e.target.id);

e.dataTransfer.setDragImage($("#image").clone().removeClass("hide")[0],0,0);

}

/* 结束拖拽 */   

$("#target")[0].ondragend = function(e) {

      e.preventDefault();

    }

})


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕夭夭 2018-07-06 14:40:11

经过测试 ,拖拽后并没有出现新页面哦 ,同学在用上传的代码测试一下哦 ,祝学习愉快 !

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师