防止图像拖动,但其他任何东西

时间:2012-08-09 16:37:43

标签: javascript dom

这里有关于stackoverflow的问题,询问如何防止图像拖动。代码是这样的:

window.addEventListener('mousedown', function(event){ event.preventDefault() }, false);

问题是这会阻止一切。当我点击输入时,它不会聚焦。所以我添加了条件“if event.target.tagName!=='INPUT'”。现在我点击输入,它是焦点,然后我点击其他地方 - 它保持专注,没有模糊发生。

如何防止图像拖动(即使使用背景图像也会在FireFox中发生)并保持所有其他功能正常工作?

编辑:我无法仅在图像上注册事件处理程序。我没有任何图像,我有背景图像的div。此外,点击图像也会模糊输入焦点。

EDIT2:下面有一个不好的解决方案(简化 - 用CoffeeScript编写),但是防止模糊行为然后再自行完成它是没有意义的。

inputs = document.querySelectorAll('input')
for input in inputs
    input.blur()

1 个答案:

答案 0 :(得分:0)

好像你走在正确的轨道上 - 但不包括输入还包括其他所有内容。为什么不仅仅防止图像上的mousedown事件?

window.addEventListener('mousedown', function(event){
    if (event.target.tagName === "IMG") { 
        event.preventDefault(); 
    } 
}, false);