Develop

[jQuery] 드래그 금지, 우클릭 금지, 전체 선택 금지 - 간단 방법

issuemaker99 2024. 10. 16. 22:46
728x90

웹 페이지에서 중요한 텍스트나 이미지가 있는 경우, 사용자가 드래그하거나, 우클릭을 통해 콘텐츠를 복사하는 것을 막고 싶은 상황이 있을 수 있습니다. jQuery를 사용하면 손쉽게 드래그 금지, 우클릭 금지, 전체 선택 금지와 같은 기능을 구현할 수 있습니다.

 

1. 드래그 금지

드래그 금지는 사용자가 특정 요소나 페이지에서 텍스트나 이미지를 마우스로 드래그하는 것을 방지하는 기능입니다. 이 기능은 주로 이미지나 중요한 텍스트를 복사하지 못하게 할 때 사용됩니다.

1.1 예제

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>드래그 금지 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){
            // 전체 페이지에서 드래그 금지
            $(document).on('dragstart', function(e) {
                e.preventDefault();
            });
        });
    </script>
</head>
<body>

<h2>드래그 금지 예제</h2>
<p>이 텍스트는 드래그할 수 없습니다.</p>
<img src="image.jpg" alt="드래그 금지 이미지">

</body>
</html>

 

1.2 설명

  • dragstart 이벤트는 사용자가 요소를 드래그할 때 발생하는 이벤트입니다.
  • **e.preventDefault()**는 기본 동작을 막기 위해 사용되며, 이 코드로 인해 사용자는 텍스트나 이미지를 드래그할 수 없습니다.

2. 우클릭 금지

우클릭 금지는 사용자가 마우스 오른쪽 버튼을 클릭하여 나타나는 컨텍스트 메뉴를 차단하는 기능입니다. 이를 통해 사용자가 콘텐츠를 복사하거나 페이지 소스를 쉽게 볼 수 없게 만듭니다.

2.1 예제

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>우클릭 금지 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function(){
            // 전체 페이지에서 우클릭 금지
            $(document).on('contextmenu', function(e) {
                e.preventDefault();
                alert('우클릭이 금지되었습니다.');
            });
        });
    </script>
</head>
<body>

<h2>우클릭 금지 예제</h2>
<p>이 페이지에서 마우스 오른쪽 버튼을 클릭할 수 없습니다.</p>

</body>
</html>

 

2.2 설명

  • contextmenu 이벤트는 사용자가 우클릭할 때 발생하는 이벤트입니다.
  • **e.preventDefault()**는 우클릭 시 기본으로 나타나는 컨텍스트 메뉴를 차단합니다.
  • alert() 메시지를 통해 사용자에게 우클릭이 금지되었음을 알릴 수도 있습니다.

3. 전체 선택 금지

전체 선택 금지 기능은 사용자가 Ctrl + A나 마우스로 전체 텍스트를 선택하는 것을 방지합니다. 이 기능을 사용하면 텍스트 복사를 더 어렵게 만들 수 있습니다.

3.1 예제

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>전체 선택 금지 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        /* CSS로도 전체 선택을 금지할 수 있음 */
        body {
            user-select: none;
        }
    </style>
    <script>
        $(document).ready(function(){
            // 전체 페이지에서 선택 금지
            $(document).on('selectstart', function(e) {
                e.preventDefault();
            });
        });
    </script>
</head>
<body>

<h2>전체 선택 금지 예제</h2>
<p>이 텍스트는 선택할 수 없습니다. 마우스를 이용해도, Ctrl + A를 눌러도 선택되지 않습니다.</p>

</body>
</html>

 

3.2 설명

  • selectstart 이벤트는 사용자가 텍스트를 선택하려고 할 때 발생하는 이벤트입니다.
  • CSS의 user-select: none 속성을 추가하면 특정 요소나 전체 페이지에서 텍스트 선택을 방지할 수 있습니다. 이 방법은 jQuery와 함께 사용하면 더욱 강력한 방어를 제공할 수 있습니다.

4. 세 가지 기능을 함께 적용하기

위에서 설명한 드래그 금지, 우클릭 금지, 전체 선택 금지 기능을 하나의 페이지에서 함께 적용할 수도 있습니다.

4.1 예제

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>기능 통합 예제</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        body {
            user-select: none; /* 전체 선택 금지 */
        }
    </style>
    <script>
        $(document).ready(function(){
            // 드래그 금지
            $(document).on('dragstart', function(e) {
                e.preventDefault();
            });

            // 우클릭 금지
            $(document).on('contextmenu', function(e) {
                e.preventDefault();
                alert('우클릭이 금지되었습니다.');
            });

            // 전체 선택 금지
            $(document).on('selectstart', function(e) {
                e.preventDefault();
            });
        });
    </script>
</head>
<body>

<h2>기능 통합 예제</h2>
<p>이 페이지에서는 드래그, 우클릭, 전체 선택이 모두 금지되어 있습니다.</p>
<img src="image.jpg" alt="금지된 이미지">

</body>
</html>

 

4.2 설명

  • 위 예제는 드래그, 우클릭, 전체 선택이 모두 금지된 페이지를 구현한 것입니다.
  • 사용자가 어떤 방식으로도 콘텐츠를 복사하거나 선택할 수 없도록 방어적 코드를 적용했습니다.

 

jQuery를 사용하면 간단한 코드로 웹 페이지에서 드래그 금지, 우클릭 금지, 전체 선택 금지 기능을 쉽게 구현할 수 있습니다. 이 기능들은 사용자가 웹 페이지의 중요한 콘텐츠를 복사하거나 무단으로 사용하는 것을 방지하는 데 유용합니다. 필요에 따라 세 가지 기능을 동시에 적용하거나 특정 기능만 선택하여 사용할 수 있습니다.

LIST