MediaWiki:Common.js: Difference between revisions
m second attempt |
m add credit |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
/* Any JavaScript here will be loaded for all users on every page load. */ | /* Any JavaScript here will be loaded for all users on every page load. */ | ||
// stolen from Lajos Mészáros on this post https://stackoverflow.com/questions/13358292/capture-tap-event-with-pure-javascript | |||
const onClickOrTap = (element, handler) => { | |||
let touchMoveHappened = false; | let touchMoveHappened = false; | ||
element.addEventListener('touchstart', () => { | element.addEventListener('touchstart', () => { | ||
// on mobile this is the 1st event that happens | // on mobile this is the 1st event that happens | ||
touchMoveHappened = false; | touchMoveHappened = false; | ||
}) | }); | ||
element.addEventListener('touchmove', () => { | element.addEventListener('touchmove', () => { | ||
// on mobile this might get triggered in which case the | // on mobile this might get triggered in which case the | ||
Line 12: | Line 12: | ||
// we'll keep a track of it | // we'll keep a track of it | ||
touchMoveHappened = true; | touchMoveHappened = true; | ||
}) | }); | ||
element.addEventListener('touchend', () => { | element.addEventListener('touchend', (e) => { | ||
// happens after touchstart, but before click | // happens after touchstart, but before click | ||
// if touch happened then we'll exit | // if touch happened then we'll exit | ||
Line 23: | Line 23: | ||
e.preventDefault(); | e.preventDefault(); | ||
// at this point we are ready to call our original handler | // at this point we are ready to call our original handler | ||
handler(e); | |||
} | }); | ||
element.addEventListener('click', (e) => { | |||
element.addEventListener('click', () => { | |||
// this will only get triggered on desktop | // this will only get triggered on desktop | ||
// because we call preventDefault for the "touchend" event | // because we call preventDefault for the "touchend" event | ||
handler(e); | |||
}) | }); | ||
} | } | ||
/* Create Page */ | /* Create Page */ | ||
const createPageTargetIdDataSetString = "[data-create-page-target-id]"; | const createPageTargetIdDataSetString = "[data-create-page-target-id]"; | ||
Line 85: | Line 85: | ||
itemsCreateInputPageGrid.push(targetElement); | itemsCreateInputPageGrid.push(targetElement); | ||
onClickOrTap(element, | onClickOrTap(element, (e) => { | ||
toggleGridTarget(element, targetElement) | |||
// element.addEventListener("click", () => | }); | ||
//element.addEventListener("click", () => | |||
// toggleGridTarget(element, targetElement) | // toggleGridTarget(element, targetElement) | ||
// ); | //); | ||
} | } | ||