페이지가 다시 게시 될 때 또는 다른 것이 진행될 때 사용자가 동일한 버튼을 여러 번 클릭 할 수 없도록 전체 페이지 상단에 큰 회색 div가 표시됩니다. 이것은 99 %의 시간 동안 정상적으로 작동하고 다른 1 %는 사용자가 div에서 스크롤/줌할 수있는 특정 모바일 장치에 있습니다.누구나 사용자가 아무 것도 클릭하지 못하도록 막는 더 좋은 방법을 생각할 수 있습니까?
올바르게 작동하도록 CSS를 완벽하게 만들지 않고 (새로운 장치와 함께 진행되는 전투가 될 것입니다.) 사용자를 막을 수 없도록 막기로 결정했습니다. $('a').click(function(e){e.preventDefault();});
과 같은 것은 사람들이 앵커 태그를 클릭하여 링크로 이동하는 것을 막지 만 발사에서 링크의 onclick 이벤트를 중지하지는 않습니다.
페이지를 원래 상태로 다시 변경해야하므로 페이지를 너무 급격하게 변경하지 않도록하십시오 (모든 onclick 속성 제거와 같은). onclick 이벤트가 실행되기 전에 클릭을 가로 채고 싶습니다만 이것이 가능하다고 생각하지 않습니다. 대신 마우스로 클릭 한 요소를 숨기고 문서의 mouseup에 표시하면 클릭 이벤트 발생을 중지하지만 아주 잘 보이지 않습니다. 누구든지 더 나은 해결책을 생각할 수 있습니까? 그렇지 않으면 모든 장치/브라우저에서 작동합니까?
var catchClickHandler = function(){
var $this = $(this);
$this.attr('data-orig-display', $this.css('display'));
$this.css({display:'none'});
};
var resetClickedElems = function(){
$('[data-orig-display]').each(function(){
$(this).css({display:$(this).attr('data-orig-display')}).removeAttr('data-orig-display');
});
};
$('#btn').click(function(){
$('a,input').on('mousedown',catchClickHandler);
$(document).on('mouseup', resetClickedElems);
setTimeout(function(){
$('a,input').off('mousedown',catchClickHandler);
$(document).off('mouseup', resetClickedElems);
}, 5000);
});
JSFiddle : http://jsfiddle.net/d4wzK/2/
, 내가 비활성화 클릭 버튼을 클릭 한 다음 날 텍스트 상자를 입력 할 수 있습니다 10 배 이상 같은 텍스트 상자를 클릭합니다. – user1048676
버튼을 비활성화하지 않으시겠습니까? 페이지의 모든 클릭을 삭제하려고하는 이유는 무엇입니까? –
5 초 후에 다시 클릭이 가능합니다. – JoeS