javascript - 即 10 : dragstart event doesn't get fired if <img> is wrapped by <a>

标签 javascript html drag-and-drop internet-explorer-10

jsFiddle:http://jsfiddle.net/39she/3/

HTML:

<a href="http://google.de">
  <img src="https://www.google.de/images/srpr/logo4w.png" draggable="true" />
</a>

JavaScript:

// Please forgive me this bad-designed function ;)
// quick and dirty solution
function log(msg) {
    document.body.innerHTML = document.body.innerHTML + "<hr />" + msg;
}

var myImg = document.getElementsByTagName("img")[0];

myImg.addEventListener("dragstart", function(evt) {
    log("Drag started");
});

日志消息出现在 Chrome 27Safari 5.1Opera 12.15 中。只有 IE 10 不会触发任何事件(尽管它会在之后放下图像时触发 drop 事件)。

编辑1
在链接标签处监听 dragstart 在 IE 10 中工作正常。

最佳答案

我相信您必须取消初始文本选择事件并激活拖动功能才能使其工作。

编辑 1:

var output = document.querySelector('#message')
, myImg = document.querySelector("#test")

function log(msg) {
  output.innerHTML = msg + ' ' + (+new Date());
}

myImg.addEventListener('selectstart', function (evt) {          
  evt.preventDefault && evt.preventDefault();
  this.dragDrop && this.dragDrop();  //activates DnD for IE  
  return false;
});

myImg.addEventListener('dragstart', function (evt) { 
  log('started');
});

myImg.addEventListener('dragend', function (evt) { 
  log('ended');
});

祝你好运!

注意: 看来 IE 默认将具有 href 属性的标签视为可拖动的。但是当你删除 href 属性时,它工作得很好。其实很有趣。 codepen.io/snypelife/pen/hImer

关于javascript - 即 10 : dragstart event doesn't get fired if <img> is wrapped by <a>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16750180/

相关文章:

Angular - 拖放上传附件

jquery-ui - jQuery Draggable 和溢出问题

javascript - Node.js:异步回调 vs 同步回调 vs process.nextTick vs setTimeout

javascript - 如何将参数/参数传递给通过调用 click 以编程方式触发的 onchange 监听器

javascript - 上传后未显示上传警报

html - CSS 插入符号在 IE Edge 中不起作用

windows-phone-7 - 无法在 Expression Blend 中拖放行为

javascript - material-table 使行在单击时可编辑

javascript - 具有不同高度 DIV 的 block 网格

javascript - IE6 悬停问题