페이징 컨트롤을 만들었는데 버튼을 클릭하는 동안 실수로 개별 이미지와 텍스트를 쉽게 선택할 수 있다는 것을 알았습니다. 이것을 막을 수 있습니까?커서 드래그로 텍스트/요소 선택을 방지하는 방법
명확히하기 위해 마우스로 강조 표시를 의미합니다. 화면의 한쪽에서 다른쪽으로 마우스를 드래그 해보십시오.
이 그리드에서 텍스트/컨트롤을 강조 표시하려고하면 선택할 수 없습니다. 어떻게 된거 야? Link
페이징 컨트롤을 만들었는데 버튼을 클릭하는 동안 실수로 개별 이미지와 텍스트를 쉽게 선택할 수 있다는 것을 알았습니다. 이것을 막을 수 있습니까?커서 드래그로 텍스트/요소 선택을 방지하는 방법
명확히하기 위해 마우스로 강조 표시를 의미합니다. 화면의 한쪽에서 다른쪽으로 마우스를 드래그 해보십시오.
이 그리드에서 텍스트/컨트롤을 강조 표시하려고하면 선택할 수 없습니다. 어떻게 된거 야? Link
드래그 및 마우스 다운 이벤트에서 초기화 및 후속 마우스 동작에 대한 업데이트를 모두 선택하십시오. 당신은 기본 브라우저로 반환 드래그 시작하거나 마우스를 따라 이벤트의 버블 링을 취소하고 무시 이벤트를 처리 할 때 :이 같은
뭔가를 당신의 mousedown을 끌어 시작하고
을 handlers- 이동e=e || window.event; pauseEvent(e);
function pauseEvent(e){
if(e.stopPropagation) e.stopPropagation();
if(e.preventDefault) e.preventDefault();
e.cancelBubble=true;
e.returnValue=false;
return false;
}
왜 거품을 멈추게해야합니까? e.preventDefault()가 충분하지 않습니까? –
예 e.preventDefault()는 최신 브라우저에서 모두 필요합니다. 나머지 코드는 중복되어 있습니다. window.event는 이전 버전의 IE 용이지만 preventDefault 메서드가 없으므로 pauseEvent 함수 호출에서 false가 반환되지 않으므로 아무 것도하지 않습니다. (2011 년조차도). – Sjeiti
CSS :'user-select : none;'내가 사용하는 것입니다. JS가 이것을 더 이상 해결할 필요가 없다는 것을 의미한다. – Ryan
이 시도 :
이것은 대부분의 브라우저에서 CSS와 IE에서unselectable
의 expando를 사용하여 달성 할 수
document.onselectstart = function()
{
window.getSelection().removeAllRanges();
};
특정 div에서만 작동하도록 어떻게 수정할 수 있습니까? –
try : $ ('yourDivSelector'). getSelection(). removeAllRanges() –
'selectstart' 이벤트가 Firefox에 없습니다. –
. 내 대답을 참조하십시오 : How to disable text selection highlighting using CSS?
이것은 받아 들인 것보다 훨씬 좋은 대답입니다. 이벤트를 완전히 우회합니다. – rtpax
저는 의견을 말하고 싶지만 충분한 명성이 없습니다. @kennebec에서 제안 된 기능을 사용하여 내 자바 스크립트 끌기 라이브러리에서 내 문제를 해결했습니다. 그것은 완벽하게 작동합니다.
function pauseEvent(e){
if(e.stopPropagation) e.stopPropagation();
if(e.preventDefault) e.preventDefault();
e.cancelBubble=true;
e.returnValue=false;
return false;
}
내가 내가 올바른 요소를 클릭 인식 할 수 있습니다 직후, 내 mousedown과 MouseMove 이벤트 사용자 정의 함수를했다. 내가 함수의 맨 위에 그냥 호출하면 그냥 문서의 모든 클릭을 죽일. 내 함수가 document.body에 이벤트로 등록되었습니다.
당신은 지금 10 개가 더있다. :) – Adaptabi
끌기의 경우 mousedown
및 mousemove
이벤트를 캡처하고 있습니다. (그리고 희망 touchstart
뿐만 아니라 touchmove
이벤트, 터치 인터페이스를 지원합니다.)
당신은 텍스트를 선택에서 브라우저를 유지하기 위해 모두 down
및 move
행사에 event.preventDefault()
를 호출해야합니다.
<input Value="test" onSelect="blur();">
Robin, 호기심 때문에'window.document'와'window' 또는'document' 사이에 차이가 있습니까? 'document'는'window'의 자식입니다. –
'window'는 자바 스크립트가 브라우저에서 실행되는 가장 바깥 쪽 범위입니다. 그래서 함수 안에서 선언되지 않은 변수는'window'의 속성입니다. 'document'를 직접 참조하는 것은 실제로'window.document'를 참조합니다. –
"mousedown"이벤트에서만 기본값을 취소하는 것으로 충분하다고 말할 수 있습니다. – tremby
를 단순히 기능 흐림() 호출을 방지 JavaScript를 사용하면 가장 간단한 방법은 다음과 같이 userSelect 스타일을 지정하는 것입니다.
var myElement = document.createElement('div');
myElement.style.userSelect = 'none';
는 특정 요소의 텍스트 선택을 차단해야하는 경우
(예 jQuery를 사용하여) 다음과 같이 선택하면
var mouseDown = false;
$(element).on('mousedown touchstart', function(event) {
event.preventDefault();
mouseDown = true;
});
$(element).on('mousemove touchmove', function(event) {
event.preventDefault();
if(mouseDown) {
// Do something here.
}
});
$(window.document).on('mouseup touchend', function(event) {
// Capture this event anywhere in the document, since the mouse may leave our element while mouse is down and then the 'up' event will not fire within the element.
mouseDown = false;
});
가능한 복제본은 h ttp : //stackoverflow.com/questions/2700000/how-to-disable-text-selection-using-jquery – kapa
다른 가능한 중복 http : // stackoverflow.com/questions/2326004/prevent-selection-in-html –