0

ここでスタックオーバーフローは、画像のドラッグを防ぐ方法を尋ねる質問です。コードは次のようになります。

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()
4

1 に答える 1

0

あなたは正しい軌道に乗っているようですが、入力を除外しても他のすべてが含まれます。画像のみでマウスダウンイベントを防止しないのはなぜですか?

window.addEventListener('mousedown', function(event){
    if (event.target.tagName === "IMG") { 
        event.preventDefault(); 
    } 
}, false);
于 2012-08-09T16:45:19.697 に答える