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

Voi*_*oid 17 javascript browser firefox jquery

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

Tim*_*own 32

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

$(document).on("dragstart", function() {
     return false;
});
Run Code Online (Sandbox Code Playgroud)

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

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

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


Den*_*s G 8

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

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

<img src="myimage.jpg" onmousedown="if (event.preventDefault) event.preventDefault()" />

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

在这个页面上有一个很好的解释(和示例):" 在FireFox中禁用图像拖动 "和一个没有很好的文档版本在这里使用jQuery作为参考:" 禁用Firefox图像拖动 "


shi*_*shi 6

没有jQuery的解决方案:

document.addEventListener('dragstart', function (e) {
    e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)


Jos*_*nio 6

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

.wrapper img {
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)