2012-08-09 28 views
0

这里在stackoverflow是一个问题,要求如何防止图像拖动。代码是这样的:防止图像拖动但其他任何东西

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

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

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

编辑:我不能只在图像上注册事件处理程序。我没有任何图像,我有div背景图片。此外,点击图像也应该模糊输入焦点。

编辑2:糟糕的解决方案在下面(简化 - 用CoffeeScript编写),但它没有任何意义,以防止模糊行为,然后再次对我自己做。

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

通过仅在图像上设置事件处理程序而不是在整个窗口上。 – PeeHaa 2012-08-09 16:41:28

回答

0

好像你在正确的轨道上 - 但不包括输入还是包括一切。为什么不仅防止图像上的mousedown事件?

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

我会引用自己:“即使有背景图片”。它不仅仅涉及图像,而且还涉及divs。并且可以点击两个图像div来模糊输入。 – A123321 2012-08-09 16:47:50

+0

这使我解决我的问题的正确道路。不知道为什么它被拒绝。 – primehalo 2014-10-10 21:26:46