1

これで、ドキュメントのデフォルトの選択動作を変更したいと思います。を使用してドキュメント本文に対してこれを行いgetElmentsByTagNameます。ただし、コードには実際には望ましい効果がありません。つまり、ユーザーがクリックしてドキュメント内のテキストを選択できないようにすることです。

<script>
    $(document).ready ( function () {
        document.getElementsByTagName("body").addEventListener('mousedown', function(e) { e.preventDefault(); }, false);
    });
</script>

これは私のサイトの他の場所で機能し、特定のページ要素での選択を防ぎます。ドキュメント全体に対してこれを行うにはどうすればよいですか?

4

3 に答える 3

0

関数にタイプミスがあります。getElementsByTagNameを使用して要素を選択すると、ページに要素が1つしかない場合でも、実際にはコレクションを受け取ります。したがって、[0]を使用して、コレクションで最初のbody要素を返すことを示します。

    document.getElementsByTagName("body")[0].
        addEventListener('mousedown', 
            function(e) { 
                e.preventDefault(); 
            }, false);

もちろん、これによりテキストが選択されなくなり、問題が解決します。

アップデート:

アンカータグのクリックを無効にする必要がないことに気づきましたが、これらのクリックも無効にしたい人のために、ここに残しておきます。

ただし、リンクがクリックされないようにするには、別のアプローチを使用する必要があります。

// bind click event to parent elements of anchor tags,
 // or it won't work properly
$('a').parent().each(function() {
    $(this).attr("href","#");
    $(this).unbind();
    $(this).click(function() {
        event.preventDefault();
        return false;
    });
});
于 2012-05-19T19:04:27.973 に答える
0
$(document).ready ( function () {
    $(document).on('mousedown', function(e) { 
        e.preventDefault(); 
    });
});​

SOに関する別の答え。

于 2012-05-19T19:04:40.363 に答える
0

これを使ってCSSでもこれができることがわかりました。

<style>
*:not(input) {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;      
}
</style>
于 2012-05-19T19:16:02.037 に答える