답변:
당신은 확인할 수 있습니다 e.originalEvent
: 그것이 정의 된 경우 클릭은 인간입니다 :
바이올린 http://jsfiddle.net/Uf8Wv/를보십시오
$('.checkbox').change(function(e){
if (e.originalEvent !== undefined)
{
alert ('human');
}
});
바이올린에서 내 예 :
<input type='checkbox' id='try' >try
<button id='click'>Click</button>
$("#try").click(function(event) {
if (event.originalEvent === undefined) {
alert('not human')
} else {
alert(' human');
}
});
$('#click').click(function(event) {
$("#try").click();
});
:)
event.isTrigger
originalEvent
이벤트가에 의해 트리거 될 때 jQuery가 채워지는 것처럼 보이지만 , 어수선하지만 작동 DOM.click()
할 수 있습니다 $($("#try")[0]).click();
.
위보다 더 똑바로 :
$('.checkbox').change(function(e){
if (e.isTrigger)
{
alert ('not a human');
}
});
$('.checkbox').trigger('change'); //doesn't alert
이 작업을 수행하는 유일한 방법 trigger
은 설명서 에 따라 호출시 추가 매개 변수를 전달하는 것 입니다.
$('.checkbox').change(function(e, isTriggered){
if (!isTriggered)
{
alert ('human');
}
});
$('.checkbox').trigger('change', [true]); //doesn't alert
수락 된 답변이 효과가 없었습니다. 6 년이 지났으며 jQuery는 그 이후로 많은 변화를 겪었습니다.
예를 들어 event.originalEvent
항상 반환true
jQuery 1.9.x객체는 항상 존재하지만 내용이 다릅니다.
최신 버전의 jQuery를 사용하는 사람들은 이것을 시도 할 수 있습니다. Chrome, Edge, IE, Opera, FF에서 작동
if ((event.originalEvent.isTrusted === true && event.originalEvent.isPrimary === undefined) || event.originalEvent.isPrimary === true) {
//Hey hooman it is you
}
현재 대부분의 브라우저는 event.isTrusted를 지원 합니다 .
if (e.isTrusted) {
/* The event is trusted: event was generated by a user action */
} else {
/* The event is not trusted */
}
에서 문서 :
isTrusted은 읽기 전용의 속성
Event
인터페이스이다Boolean
하다 사실 이 이벤트는 사용자 동작에 의해 생성 한 때 오류 이벤트가 생성 또는 수정 된 스크립트 또는 통해 전달 될 때 EventTarget.dispatchEvent () .
onmousedown을 사용하여 마우스 클릭과 트리거 () 호출을 감지 할 수 있습니다.
마우스 위치를 확인할 수있는 가능성에 대해 생각합니다.
모든 코드를 제어 할 수있는 경우 $(input).focus()
보다 외계인 호출 이 없습니다 setFocus()
.
전역 변수를 사용하는 것이 올바른 방법입니다.
var globalIsHuman = true;
$('input').on('focus', function (){
if(globalIsHuman){
console.log('hello human, come and give me a hug');
}else{
console.log('alien, get away, i hate you..');
}
globalIsHuman = true;
});
// alien set focus
function setFocus(){
globalIsHuman = false;
$('input').focus();
}
// human use mouse, finger, foot... whatever to touch the input
일부 외계인이 여전히 $(input).focus()
다른 행성에서 전화 를 원한다면 행운을 빕니다 또는 다른 답변을 확인
setFocus()
를 걸지 못하고 사람들이 포커스 이벤트를 트리거하지 못합니다. 전혀 글 setFocus()
을 쓰지 않으면 사람들이 전화를 걸지 못하므로 이점이 없습니다. 실제로 사람들은 여전히 전화를 걸어 $('input').focus()
통과 할 수 있습니다 .
(function(){/*your code here*/})();
것입니다 . 이렇게하면 setFocus 함수가 호출되지 않고 부울이 외부 스크립트에 의해 변경되지 않습니다.