[JQUERY] 어떻게 자바 스크립트를 사용하여 Ctrl 키 + V, Ctrl + C를 감지?
JQUERY어떻게 자바 스크립트를 사용하여 Ctrl 키 + V, Ctrl + C를 감지?
해결법
-
1.난 그냥 관심이 아웃했다. 나는 그것이 옳은 일이 아니다 동의하지만, 나는 또한 코드가 쉽게 기능을 추가하기보다는 고급 클립 보드처럼 (그것을 빼앗아, 또는 Ctrl + S 트리거링을 확장 할 수있는 연산의 결정 ...해야한다고 생각 서버 측)을 저장합니다.
난 그냥 관심이 아웃했다. 나는 그것이 옳은 일이 아니다 동의하지만, 나는 또한 코드가 쉽게 기능을 추가하기보다는 고급 클립 보드처럼 (그것을 빼앗아, 또는 Ctrl + S 트리거링을 확장 할 수있는 연산의 결정 ...해야한다고 생각 서버 측)을 저장합니다.
$ (문서) .ready (함수 () { VAR ctrlDown = 거짓, ctrlKey = 17 cmdKey = 91 V 키 = 86 cKey = 67; $ (문서) .keydown (기능 (전자) { 경우 (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = TRUE; }).의 keyup (함수 (E) { 경우 (e.keyCode == ctrlKey || e.keyCode == cmdKey) ctrlDown = 거짓; }); $ ( ". 노 복사 - 붙여 넣기").를 keyDown (기능 (전자) { (ctrlDown && (e.keyCode == V 키 || e.keyCode == cKey)) 반환 경우 false; }); // 문서 Ctrl + C / V $ (문서) .keydown (기능 (전자) { (ctrlDown && (e.keyCode == cKey)) CONSOLE.LOG ( "문서 캐치 Ctrl + C ')의 경우; (ctrlDown && (e.keyCode == V 키)) CONSOLE.LOG ( "문서 캐치 Ctrl 키 + V") 경우; }); }); <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"> script>
Ctrl + C Ctrl + V를 비활성화 H3> <텍스트 영역 클래스 = "아니오 복사 붙여 넣기"> 텍스트 영역> 로
로
Ctrl + C + Ctrl 키의 허용 V H3> <텍스트 영역> 텍스트 영역>
또한 단지 명확히하기 위해,이 스크립트는 jQuery 라이브러리가 필요합니다.
Codepen 데모
편집 : 팀 아래의 제안 덕분에 (주석 참조) (e.which을 포함)을 제거 3 개 중복 라인
편집 : 맥에 대한 지원이 추가 (Ctrl 키 대신 cmd를 키)
-
2.당신은 쉽게 기능을 결합함으로써 등, 붙여 넣기, 복사를 감지 할 수 있습니다 jQuery로 :
당신은 쉽게 기능을 결합함으로써 등, 붙여 넣기, 복사를 감지 할 수 있습니다 jQuery로 :
$("#textA").bind('copy', function() { $('span').text('copy behaviour detected!') }); $("#textA").bind('paste', function() { $('span').text('paste behaviour detected!') }); $("#textA").bind('cut', function() { $('span').text('cut behaviour detected!') });
자세한 내용은 여기 : http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/
-
3.불법 복제 방지 수단으로 사용하는 경우가 귀찮을 수 있지만, 나는 그렇게, 합법적 인 것 몇 가지 경우가있을 수 있습니다 볼 수 있습니다 :
불법 복제 방지 수단으로 사용하는 경우가 귀찮을 수 있지만, 나는 그렇게, 합법적 인 것 몇 가지 경우가있을 수 있습니다 볼 수 있습니다 :
function disableCopyPaste(elm) { // Disable cut/copy/paste key events elm.onkeydown = interceptKeys // Disable right click events elm.oncontextmenu = function() { return false } } function interceptKeys(evt) { evt = evt||window.event // IE support var c = evt.keyCode var ctrlDown = evt.ctrlKey||evt.metaKey // Mac support // Check for Alt+Gr (http://en.wikipedia.org/wiki/AltGr_key) if (ctrlDown && evt.altKey) return true // Check for ctrl+c, v and x else if (ctrlDown && c==67) return false // c else if (ctrlDown && c==86) return false // v else if (ctrlDown && c==88) return false // x // Otherwise allow return true }
감지 할 수있는 유일한 방법에 event.ctrlKey을 사용하는 것입니다, 그래서 나는 오히려 이벤트가 트리거되지 않습니다와 "최대", "아래로"맥 OS X Ctrl 키 / Alt 키에 대부분의 브라우저에서와 키 코드를 검사보다 event.ctrlKey을 사용했습니다 예 Ctrl 키 후 C 이벤트가 아래로 개최됩니다. 또한 맥에 대한 metaKey와 ctrlKey 교체했습니다.
이 방법의 제한 사항 :
-
4.이 일을하는 또 다른 방법이있다 : onpaste, oncopy 및 이벤트에 등록하고 (약간의 문제) IE, 파이어 폭스, 크롬, 사파리에서 취소 할 수 있습니다 oncut, 이러한 이벤트를 취소하는 오페라이다 허용하지 않는 유일한 주요 브라우저.
이 일을하는 또 다른 방법이있다 : onpaste, oncopy 및 이벤트에 등록하고 (약간의 문제) IE, 파이어 폭스, 크롬, 사파리에서 취소 할 수 있습니다 oncut, 이러한 이벤트를 취소하는 오페라이다 허용하지 않는 유일한 주요 브라우저.
당신은 Ctrl 키 +의 V 및 차단 내 다른 대답에서 볼 수 있듯이 Ctrl 키 + C 많은 부작용이 함께 제공하고, 여전히 등 파이어 폭스 편집 메뉴를 사용하여 붙여 넣기에서 사용자를 방지하지 않습니다
function disable_cutcopypaste(e) { var fn = function(evt) { // IE-specific lines evt = evt||window.event evt.returnValue = false // Other browser support if (evt.preventDefault) evt.preventDefault() return false } e.onbeforepaste = e.onbeforecopy = e.onbeforecut = fn e.onpaste = e.oncopy = e.oncut = fn }
사파리는 여전히이 방법 몇 가지 사소한 문제가있다 (이 절단 대신에 클립 보드를 지 웁니다 / 기본을 방지 할 때 복사)하지만 버그가 지금 크롬에서 수정 된 것으로 보인다.
자세한 내용은 http://www.quirksmode.org/dom/events/cutcopypaste.html 및 관련 테스트 페이지 http://www.quirksmode.org/dom/events/tests/cutcopypaste.html :도를 참조하십시오.
-
5.라이브 데모 : http://jsfiddle.net/abdennour/ba54W/
라이브 데모 : http://jsfiddle.net/abdennour/ba54W/
$(document).ready(function() { $("#textA").bind({ copy : function(){ $('span').text('copy behaviour detected!'); }, paste : function(){ $('span').text('paste behaviour detected!'); }, cut : function(){ $('span').text('cut behaviour detected!'); } }); });
-
6.jQuery를 짧은 상황에 맞는 메뉴를 사용하는 사용자를 방지하기위한 솔루션, 복사 및 잘라 내기 :
jQuery를 짧은 상황에 맞는 메뉴를 사용하는 사용자를 방지하기위한 솔루션, 복사 및 잘라 내기 :
jQuery(document).bind("cut copy contextmenu",function(e){ e.preventDefault(); });
또한 편리한 올 수도 CSS에서 텍스트 선택을 해제 :
.noselect { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }
-
7.당신은 ctrlKey 속성을 사용하는 경우에는 상태를 유지할 필요가 없습니다.
당신은 ctrlKey 속성을 사용하는 경우에는 상태를 유지할 필요가 없습니다.
$(document).keydown(function(event) { // Ctrl+C or Cmd+C pressed? if ((event.ctrlKey || event.metaKey) && event.keyCode == 67) { // Do stuff. } // Ctrl+V or Cmd+V pressed? if ((event.ctrlKey || event.metaKey) && event.keyCode == 86) { // Do stuff. } // Ctrl+X or Cmd+X pressed? if ((event.ctrlKey || event.metaKey) && event.keyCode == 88) { // Do stuff. } }
-
8.나는 키 입력을 잡는다 jQuery 플러그인을 썼다. (글꼴 제외) OS없이 HTML 양식에서 여러 언어 스크립트 입력을 가능하게하는 데 사용할 수 있습니다. 코드의 그것의 약 300 라인은, 어쩌면 당신은 살펴 봤으면 :
나는 키 입력을 잡는다 jQuery 플러그인을 썼다. (글꼴 제외) OS없이 HTML 양식에서 여러 언어 스크립트 입력을 가능하게하는 데 사용할 수 있습니다. 코드의 그것의 약 300 라인은, 어쩌면 당신은 살펴 봤으면 :
일반적으로, 변경의 같은 종류의주의하십시오. 다른 솔루션을 사용할 수 있었기 때문에 나는 클라이언트에 대한 플러그인을 썼다.
-
9.당신은 오른쪽 클릭하면이 코드를 사용할 수 있습니다, CTRL + C, Ctrl + V, CTRL + X를 감지하고 방지 그들의 행동
당신은 오른쪽 클릭하면이 코드를 사용할 수 있습니다, CTRL + C, Ctrl + V, CTRL + X를 감지하고 방지 그들의 행동
$(document).bind('copy', function(e) { alert('Copy is not allowed !!!'); e.preventDefault(); }); $(document).bind('paste', function() { alert('Paste is not allowed !!!'); e.preventDefault(); }); $(document).bind('cut', function() { alert('Cut is not allowed !!!'); e.preventDefault(); }); $(document).bind('contextmenu', function(e) { alert('Right Click is not allowed !!!'); e.preventDefault(); });
-
10.대신 때 onKeyPress의, onKeyDown에 사용합니다.
대신 때 onKeyPress의, onKeyDown에 사용합니다.
<input type="text" onkeydown="if(event.ctrlKey && event.keyCode==86){return false;}" name="txt">
-
11.또 다른 방법은 (어떤이 필요한 플러그인이) 단지에 전달되는 이벤트 객체의 ctrlKey 속성을 사용하는 Ctrl 키를 다음과 같이 이벤트의 시간에 누를 경우를 나타냅니다. :
또 다른 방법은 (어떤이 필요한 플러그인이) 단지에 전달되는 이벤트 객체의 ctrlKey 속성을 사용하는 Ctrl 키를 다음과 같이 이벤트의 시간에 누를 경우를 나타냅니다. :
$(document).keypress("c",function(e) { if(e.ctrlKey) alert("Ctrl+C was pressed!!"); });
JQuery와 참조 : 키를 누를 때, Ctrl + C (또는 같은 몇 가지 콤보).
-
12.당신이 감지하고 Ctrl + C / V를 차단할 수있는 반면, 잊지 마세요, 당신은 여전히 특정 필드의 값을 변경할 수 있습니다. 이에 대한 좋은 예는 이것이 당신이 필드의 값-속성을 변경할 수 있습니다, 크롬의이 요소의 기능을 검사합니다.
당신이 감지하고 Ctrl + C / V를 차단할 수있는 반면, 잊지 마세요, 당신은 여전히 특정 필드의 값을 변경할 수 있습니다. 이에 대한 좋은 예는 이것이 당신이 필드의 값-속성을 변경할 수 있습니다, 크롬의이 요소의 기능을 검사합니다.
-
13.난 이미 문제가 있고 난 단지 숫자를 받아 다음 코드 ..하여 해결
난 이미 문제가 있고 난 단지 숫자를 받아 다음 코드 ..하여 해결
$('#<%= mobileTextBox.ClientID %>').keydown(function(e) { ///// e.which Values // 8 : BackSpace , 46 : Delete , 37 : Left , 39 : Rigth , 144: Num Lock if (e.which != 8 && e.which != 46 && e.which != 37 && e.which != 39 && e.which != 144 && (e.which < 96 || e.which > 105 )) { return false; } });
당신은 Ctrl 키 아이디 e.which == (17)를 감지 할 수 있습니다
-
14.복사 이벤트를 오버라이드 (override)를 허용하는 후크, 붙여 넣기 이벤트와 같은 일에 사용될 수 있습니다. 입력 요소는 표시하지 않을 수 없음; 또는 시정 : 숨겨진; 슬프게도
복사 이벤트를 오버라이드 (override)를 허용하는 후크, 붙여 넣기 이벤트와 같은 일에 사용될 수 있습니다. 입력 요소는 표시하지 않을 수 없음; 또는 시정 : 숨겨진; 슬프게도
export const useOverrideCopy = () => { const [copyListenerEl, setCopyListenerEl] = React.useState( null as HTMLInputElement | null ) const [, setCopyHandler] = React.useState<(e: ClipboardEvent) => void | null>( () => () => {} ) // appends a input element to the DOM, that will be focused. // when using copy/paste etc, it will target focused elements React.useEffect(() => { const el = document.createElement("input") // cannot focus a element that is not "visible" aka cannot use display: none or visibility: hidden el.style.width = "0" el.style.height = "0" el.style.opacity = "0" el.style.position = "fixed" el.style.top = "-20px" document.body.appendChild(el) setCopyListenerEl(el) return () => { document.body.removeChild(el) } }, []) // adds a event listener for copying, and removes the old one const overrideCopy = (newOverrideAction: () => any) => { setCopyHandler((prevCopyHandler: (e: ClipboardEvent) => void) => { const copyHandler = (e: ClipboardEvent) => { e.preventDefault() newOverrideAction() } copyListenerEl?.removeEventListener("copy", prevCopyHandler) copyListenerEl?.addEventListener("copy", copyHandler) copyListenerEl?.focus() // when focused, all copy events will trigger listener above return copyHandler }) } return { overrideCopy } }
다음과 같이 사용 :
const customCopyEvent = () => { console.log("doing something") } const { overrideCopy } = useOverrideCopy() overrideCopy(customCopyEvent)
당신이 다시 집중 및 복사에 사용자 정의 이벤트를 호출합니다 overrideCopy 호출 할 때마다.
-
15.당신은 키 누름 이벤트를 수신하고,이 특정 키 코드를 일치하는 경우 (텍스트 입력) 기본 이벤트를 중지 할 수 있습니다
당신은 키 누름 이벤트를 수신하고,이 특정 키 코드를 일치하는 경우 (텍스트 입력) 기본 이벤트를 중지 할 수 있습니다
-
16.반면, 아스키 코드, 나는 잠시 동안 e.keyCode을 사용하고 있었고, 난 내가 CTRL +을 누르면.,이 속성은 잘못된 번호 190를 반환 발견했습니다. (46)입니다!
반면, 아스키 코드, 나는 잠시 동안 e.keyCode을 사용하고 있었고, 난 내가 CTRL +을 누르면.,이 속성은 잘못된 번호 190를 반환 발견했습니다. (46)입니다!
대신 e.keyCode의 e.key.toUpperCase (). charCodeAt (0)를 사용한다 그래서.
-
17.그것을 방지하는 몇 가지 방법이있다.
그것을 방지하는 몇 가지 방법이있다.
그러나 사용자는 항상 떨어져 자바 스크립트를 켜거나 단지 페이지의 소스 코드를 볼 수있을 것입니다.
몇 가지 예입니다 (jQuery를 필요)
/** * Stop every keystroke with ctrl key pressed */ $(".textbox").keydown(function(){ if (event.ctrlKey==true) { return false; } }); /** * Clear all data of clipboard on focus */ $(".textbox").focus(function(){ if ( window.clipboardData ) { window.clipboardData.setData('text',''); } }); /** * Block the paste event */ $(".textbox").bind('paste',function(e){return false;});
편집 : 팀 다운 말했다 방법이 기능은 모든 브라우저 부양이다.
from https://stackoverflow.com/questions/2903991/how-to-detect-ctrlv-ctrlc-using-javascript by cc-by-sa and MIT license
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 방울을 업로드 자바 스크립트를 할 수 있습니까? (0) | 2020.10.05 |
---|---|
[JQUERY] 어떻게 jQuery를 $ 아약스 오류 응답 텍스트를 얻으려면? (0) | 2020.10.05 |
[JQUERY] 페이지의 메타 태그를 변경하는 자바 스크립트를 사용하는 것이 가능? (0) | 2020.10.05 |
[JQUERY] 구글 API의에 jQuery를 포스트를 보내는 액세스 제어 - 허용 - 원산지 오류 (0) | 2020.10.04 |
[JQUERY] jQuery를 가장 빠른 어린이 () 또는 발견 ()이란 무엇입니까? (0) | 2020.10.04 |