如何使用jQuery禁用Firefox对所有图像行为的默认拖放?

Firefox有这种烦人的行为,它让用户默认拖放任何图像元素。 如何使用jQuery干净地禁用此默认行为?

以下内容将在Firefox 3及更高版本中执行:

$(document).on("dragstart", function() { return false; }); 

如果您不想禁用所有拖动(例如,您可能仍希望允许用户将链接拖动到其链接工具栏),则可以确保仅阻止元素拖动:

 $(document).on("dragstart", function(e) { if (e.target.nodeName.toUpperCase() == "IMG") { return false; } }); 

请记住,这将允许拖动链接中的图像。

它需要是jQuery吗? 您只需要使用event.preventDefault()为相关图像上的mousedown事件定义回调函数。

所以你的图片标签看起来像这样:

需要额外的if ,否则IE会抛出错误。 如果你想要所有图像标签,你只需要使用jQuery迭代img标签并附加onmousedown事件处理程序。

这个页面上有一个很好的解释(和示例):“ 在FireFox中禁用图像拖动 ”,这里使用jQuery作为参考:“ 禁用Firefox图像拖动 ”

没有jQuery的解决方案:

 document.addEventListener('dragstart', function (e) { e.preventDefault(); }); 

如果Javascript是可选要求,您可以尝试使用CSS

 .wrapper img { pointer-events: none; } 

引用Tim Down的解决方案,你可以实现相当于他的第二个代码片段,只使用jQuery时禁用img drags:

 $(document).on("dragstart", "img", function() { return false; }); 

我不记得我的来源,但工作