js 如何判斷鼠標點擊事件還是js代碼調用


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>測試用戶點擊和js點擊</title>
<script src='jquery-1.10.2.min.js'></script>
</head>
<body>
<button id="btn">Click</button>
<script>
// 來源:http://www.zhihu.com/question/31259853
$(document).ready(function(){
// 方式1
a();
// 方式2
// b();
// b2();
// 方式3
// c();
// 方式1:btn.click.caller
function a() {
var btn = $('#btn');
// 賦予事件
btn.click(function() {
console.log(btn.click.caller);
if(null === btn.click.caller) {
// 用戶點擊的
alert('用戶點擊了');
}else {
// JS代碼調的
alert('JS點擊了');
}
});
btn.click();
}
// 方式2: e.originalEvent(jquery)
function b(){
var btn = $('#btn');
// 賦予事件
btn.click(function(event) {
// event.originalEvent => MouseEvent
if(event.originalEvent) {
// 用戶點擊的
alert('用戶點擊了');
}else {
// JS代碼調的
alert('JS點擊了');
}
});
btn.click();
}
// 方式2:pageX, clientX(原生js),也闊以是offsetX/layerX/screenX
function b2(){
// 原生js實現
var btn2 = document.getElementById('btn');
// DOM0級事件實現
btn2.onclick = function(event){
if (event.pageX){
alert('用戶點擊了');
}else{
alert('JS點擊了');
}
}
btn2.click();
}
// 方式3: event.isTrusted IE9+/firefox支持
function c(){
var btn = $('#btn');
// 賦予事件
btn.click(function(event) {
// event.originalEvent => MouseEvent
if(event.isTrusted) {
// 用戶點擊的
alert('用戶點擊了');
}else {
// JS代碼調的
alert('JS點擊了');
}
});
btn.click();
}
});
</script>
</body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM