[javascript] 웹 페이지에서 마우스 오른쪽 버튼을 클릭하지 않으려면 어떻게합니까?

JavaScript를 사용하지 않고 웹 페이지를 마우스 오른쪽 버튼으로 클릭하지 않도록 설정할 수 있습니까? 대부분의 브라우저에서 사용자가 자바 스크립트를 비활성화 할 수 있기 때문에이 질문을합니다.

그렇지 않은 경우 JavaScript를 사용하여 오른쪽 클릭을 비활성화하려면 어떻게합니까?



답변

“contextmenu”이벤트에 대한 이벤트 리스너를 추가하고 preventDefault()메소드를 호출하여 JavaScript로이를 수행 할 수 있습니다 .

document.addEventListener('contextmenu', event => event.preventDefault());

그것은 말하지 마십시오 : 그것을하지 마십시오.

왜? 성가신 사용자 외에는 아무것도 달성하지 못하기 때문입니다. 또한 많은 브라우저에는 오른쪽 클릭 (컨텍스트) 메뉴를 비활성화 할 수 없도록하는 보안 옵션이 있습니다.

왜 원하는지 잘 모르겠습니다. 그런 식으로 소스 코드 나 이미지를 보호 할 수 있다고 잘못 생각한 경우 다시 생각하십시오. 할 수 없습니다.


답변

하지마

하지 마십시오.

어떤 작업을 수행하더라도 사용자가 웹 사이트의 모든 데이터에 완전히 액세스하지 못하게 할 수는 없습니다. 브라우저에서 Javascript를 끄거나 NoScript와 같은 플러그인을 사용하여 코딩하는 모든 Javascript를 무례하게 렌더링 할 수 있습니다. 또한 사용자가 사이트에 대해 단순히 “소스보기”또는 “페이지 정보보기”(또는 wget 사용) 기능을 비활성화 할 수있는 방법이 없습니다.

노력할 가치가 없습니다. 실제로 작동하지 않습니다. 그것은 당신의 사이트를 사용자에게 적대적으로 만들 것입니다. 그들은 이것을 알아 차리고 방문을 멈출 것입니다. 이 작업에는 아무런 이점이 없으며, 노력 낭비와 트래픽 손실 만 발생합니다.

하지마

업데이트 : 이 작은 주제는 시간이 지남에 따라 논쟁의 여지가있는 것으로 보입니다. 그럼에도 불구하고, 나는이 질문에 대한 답을 기다립니다. 때로는 정답이 문자 그대로의 응답이 아닌 조언입니다.

사용자 정의 상황에 맞는 메뉴 를 만드는 방법을 찾기 위해이 질문을 우연히 본 사람들 은 다음과 같은 다른 곳을 찾아야합니다.


답변

원래 질문은 사용자가 JavaScript를 비활성화 할 수 있다는 점에서 마우스 오른쪽 버튼을 중지하는 방법에 관한 것이 었습니다 .

예를 들어 HTML5 게임에서 마우스 오른쪽 버튼을 클릭하는 것과 같습니다. 위의 인라인 코드로 수행 할 수 있거나 조금 더 좋은 것은 다음과 같습니다.

document.addEventListener("contextmenu", function(e){
    e.preventDefault();
}, false);

당신이 게임을하는 경우에, 다음 오른쪽 클릭 버튼을 발사 기억 하려면 contextmenu 이벤트를 -뿐만 아니라 일반 화재 mousedown을 하고 와 mouseUp 도 이벤트를. 당신은 이벤트의 점검 할 필요가 그래서 있는 권리 이벤트를 발사한다 (=== 3) 마우스 버튼을가 (이 === 2) 중간 왼쪽 (=== 1)이었다 있는지 확인하기 위해 속성을, 또는.

jQuery의 예제는 다음과 같습니다. 마우스 오른쪽 버튼을 누르면 mousedown 이벤트, contextmenu 이벤트 및 mouseup 이벤트의 세 가지 이벤트가 발생합니다.

// With jQuery
$(document).on({
    "contextmenu": function(e) {
        console.log("ctx menu button:", e.which);

        // Stop the context menu
        e.preventDefault();
    },
    "mousedown": function(e) {
        console.log("normal mouse down:", e.which);
    },
    "mouseup": function(e) {
        console.log("normal mouse up:", e.which);
    }
});

따라서 게임에서 왼쪽 및 오른쪽 마우스 버튼을 사용하는 경우 마우스 처리기에서 일부 조건부 논리를 수행해야합니다.


답변

마우스 오른쪽 버튼을 클릭하려고 할 때마다 사용자에게 메시지를 알리는 것에 신경 쓰지 않으면 본문 태그에 추가하십시오.

<body oncontextmenu="return false;">

마우스 오른쪽 버튼뿐만 아니라 키보드에서도 상황에 맞는 메뉴에 대한 모든 액세스를 차단합니다.

그러나 다른 답변에서 언급했듯이 실제로 마우스 오른쪽 버튼 클릭 비활성화 프로그램을 추가하는 것은 의미가 없습니다. 기본 브라우저 지식이있는 사람이라면 누구나 소스를보고 필요한 정보를 추출 할 수 있습니다.


답변

jquery 팬이라면 이것을 사용하십시오.

    $(function() {
        $(this).bind("contextmenu", function(e) {
            e.preventDefault();
        });
    }); 


답변

첫째, 클라이언트 측 기능을 사용하지 않으면이 작업을 수행 할 수 없습니다. 여기에서 자바 스크립트가 실행됩니다.

둘째, 최종 사용자가 사이트에서 소비 할 수있는 것을 제어하려는 경우 해당 정보를 표시하는 방법을 다시 생각해야합니다. 이미지에는 브라우저 없이도 HTTP를 통해 가져올 수있는 공개 URL이 있습니다.

인증은 누가 어떤 리소스에 액세스 할 수 있는지 제어 할 수 있습니다.

이미지에 포함 된 워터 마킹은 이미지가 특정 개인 / 회사에서 온 것임을 증명할 수 있습니다.

하루가 끝나면 리소스 관리는 실제로 사용자 / 게스트 관리입니다.

인터넷의 첫 번째 규칙, 만약 당신이 그것을 원하지 않는다면 공개하지 마십시오!

인터넷의 두 번째 규칙은 인터넷을 원하지 않는다면 인터넷에 두지 마십시오!


답변

대부분의 사람들이 말했듯이 사람들이 이미지를 다운로드하지 못하도록 막는 것이 목표라면 오른쪽 클릭을 사용 중지하면 거의 효과가 없습니다.

이미지를 보호하려고한다고 가정하면 대체 방법은 다음과 같습니다.

사용자는 플래시 플레이어를 사용하여 다운로드 할 수 없지만 쉽게 화면을 캡처 할 수 있습니다.

좀 더 어색하게하려면 이미지를 투명한 이미지가 포함 된 div의 배경으로 만듭니다.

<div style="background-image: url(YourImage.jpg);">
   <img src="transparent.gif"/>
</div>

이미지의 우연한 도난을 방지하기에 충분하지만 (샘플은 아래 참조) 이러한 모든 기술과 마찬가지로 html에 대한 기본적인 이해로이기는 것은 쉽지 않습니다.