재우니의 블로그

 

 

마우스 우클릭 방지와 텍스트 드래그 방지를 구현하는 코드들은 여러 곳에 존재하며, JavaScript와 CSS로 구성되어 있습니다. 이들 코드는 사용자가 페이지 내에서 텍스트나 이미지를 복사하거나, 마우스 우클릭을 통해 컨텍스트 메뉴를 여는 것을 방지합니다.

 

우클릭 및 드래그 방지 코드 추출

 

HTML 파일에서 마우스 우클릭 방지, 드래그 방지 및 텍스트 선택 방지를 구현하는 JavaScript 코드의 주요 부분은 다음과 같습니다:

 

JavaScript 코드

<script id="wpcp_disable_selection" type="text/javascript">
    var image_save_msg = 'You are not allowed to save images!';
    var no_menu_msg = 'Context Menu disabled!';
    var smessage = "컨덴츠는 보호됩니다.";

    function disableEnterKey(e) {
        var elemtype = e.target.tagName;
        elemtype = elemtype.toUpperCase();
        if (elemtype == "TEXT" || elemtype == "TEXTAREA" || elemtype == "INPUT" || elemtype == "PASSWORD" || elemtype == "SELECT" || elemtype == "OPTION" || elemtype == "EMBED") {
            elemtype = 'TEXT';
        }
        if (e.ctrlKey) {
            var key;
            if (window.event)
                key = window.event.keyCode; // IE
            else
                key = e.which; // Firefox
            if (elemtype != 'TEXT' && (key == 97 || key == 65 || key == 67 || key == 99 || key == 88 || key == 120 || key == 26 || key == 85 || key == 86 || key == 83 || key == 43 || key == 73)) {
                if (wccp_free_iscontenteditable(e))
                    return true;
                show_wpcp_message('You are not allowed to copy content or view source');
                return false;
            } else
                return true;
        }
    }

    function wccp_free_iscontenteditable(e) {
        var e = e || window.event;
        var target = e.target || e.srcElement;
        var elemtype = e.target.nodeName;
        elemtype = elemtype.toUpperCase();
        var iscontenteditable = "false";
        if (typeof target.getAttribute != "undefined")
            iscontenteditable = target.getAttribute("contenteditable");
        var iscontenteditable2 = false;
        if (typeof target.isContentEditable != "undefined")
            iscontenteditable2 = target.isContentEditable;
        if (target.parentElement.isContentEditable)
            iscontenteditable2 = true;
        if (iscontenteditable == "true" || iscontenteditable2 == true) {
            if (typeof target.style != "undefined")
                target.style.cursor = "text";
            return true;
        }
    }

    function disable_copy(e) {
        var e = e || window.event;
        var elemtype = e.target.tagName;
        elemtype = elemtype.toUpperCase();
        if (elemtype == "TEXT" || elemtype == "TEXTAREA" || elemtype == "INPUT" || elemtype == "PASSWORD" || elemtype == "SELECT" || elemtype == "OPTION" || elemtype == "EMBED") {
            elemtype = 'TEXT';
        }
        if (wccp_free_iscontenteditable(e))
            return true;
        var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
        var checker_IMG = '';
        if (elemtype == "IMG" && checker_IMG == 'checked' && e.detail >= 2) {
            show_wpcp_message(alertMsg_IMG);
            return false;
        }
        if (elemtype != "TEXT") {
            if (smessage !== "" && e.detail == 2)
                show_wpcp_message(smessage);
            if (isSafari)
                return true;
            else
                return false;
        }
    }

    document.onkeydown = disableEnterKey;
    document.onselectstart = disable_copy_ie;
    if (navigator.userAgent.indexOf('MSIE') == -1) {
        document.onmousedown = disable_copy;
        document.onclick = reEnable;
    }
    window.onload = function() {
        disableSelection(document.body);
    };
</script>

<script id="wpcp_disable_Right_Click" type="text/javascript">
    document.ondragstart = function() {
        return false;
    }
    function nocontext(e) {
        return false;
    }
    document.oncontextmenu = nocontext;
</script>

 

 

 

CSS 코드

 

CSS를 사용하여 사용자 선택을 방지하는 코드도 포함되어 있습니다. 이 코드는 사용자가 페이지에서 텍스트를 선택하지 못하게 합니다.

 

<style>
    .unselectable {
        -moz-user-select: none;
        -webkit-user-select: none;
        cursor: default;
    }

    html {
        -webkit-touch-callout: none;
        -webkit-user-select: none;
        -khtml-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        -webkit-tap-highlight-color: rgba(0,0,0,0);
    }
</style>

 

 

dragcopyprevent.html
0.00MB