如何在点击复制粘贴时不触发onClick事件?
How to not trigger the onClick event when Clicking for copy and pasting?
我有一个 link 和一个 onClick
事件让我导航到另一个页面。
但是,当用户单击并保持单击 link 文本的 select 部分以将其复制到剪贴板时,我不想触发 onClick
事件。
有没有办法区分即时点击和长时间点击?
使用 jQuery 只是为了简单起见。 vanilla JavaScript. Most code is from 的逻辑相同。与该答案的唯一区别是您必须使用该知识来决定是否调用 preventDefault()
var left = 0,
top = 0,
radiusLimit = 5,
didMove = false;
$('a').on({
mousedown: function(event) {
left = event.pageX;
top = event.pageY;
},
mouseup: function(event) {
var deltaX = event.pageX - left;
var deltaY = event.pageY - top;
var euclidean = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
didMove = euclidean > radiusLimit;
},
click: function(e) {
if (didMove) {
e.preventDefault();
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://google.com">Here is a link that we can select half the text</a>
我有一个 link 和一个 onClick
事件让我导航到另一个页面。
但是,当用户单击并保持单击 link 文本的 select 部分以将其复制到剪贴板时,我不想触发 onClick
事件。
有没有办法区分即时点击和长时间点击?
使用 jQuery 只是为了简单起见。 vanilla JavaScript. Most code is from 的逻辑相同。与该答案的唯一区别是您必须使用该知识来决定是否调用 preventDefault()
var left = 0,
top = 0,
radiusLimit = 5,
didMove = false;
$('a').on({
mousedown: function(event) {
left = event.pageX;
top = event.pageY;
},
mouseup: function(event) {
var deltaX = event.pageX - left;
var deltaY = event.pageY - top;
var euclidean = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
didMove = euclidean > radiusLimit;
},
click: function(e) {
if (didMove) {
e.preventDefault();
}
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://google.com">Here is a link that we can select half the text</a>