| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- const doubleTap = {
- install(app) {
- app.directive('double-tap', {
- mounted(el, binding) {
- let lastTap = 0;
- let timeout = null;
- const handleClick = (event) => {
- const now = Date.now();
- const timeDiff = now - lastTap;
- if (timeout) clearTimeout(timeout);
- if (timeDiff < 300 && timeDiff > 0) {
- if (typeof binding.value === 'function') {
- binding.value(event);
- }
- lastTap = 0;
- } else {
- timeout = setTimeout(() => {
- lastTap = 0;
- }, 300);
- lastTap = now;
- }
- };
- el.addEventListener('click', handleClick);
- el._doubleTapHandler = handleClick;
- },
- unmounted(el) {
- if (el._doubleTapHandler) {
- el.removeEventListener('click', el._doubleTapHandler);
- delete el._doubleTapHandler;
- }
- }
- });
- }
- }
- export default doubleTap;
|