diff --git a/docs/VirtualIODevices.js b/docs/VirtualIODevices.js index 5d33367..bf2330b 100644 --- a/docs/VirtualIODevices.js +++ b/docs/VirtualIODevices.js @@ -3,6 +3,28 @@ const clickButton = (function() { const configId = "clickButton"; + const tagsToFilter = { + "input": true, "label": true, "textarea": true, "button": true, + "select": true, "a": true, "summary": true, + }; + const idsToFilter = { + "padForm": true, + }; + const classesToFilter = [ + "screenKey", + ]; + + function isEventToIgnore(event) { + let element = event.target; + for (;;) { + if (typeof element.tagName === "string" && element.tagName.toLowerCase() in tagsToFilter) return true; + if (element.id in idsToFilter) return true; + if (element.classList && classesToFilter.some((name) => element.classList.contains(name))) return true; + if (!element.parentNode) return false; + element = element.parentNode; + } + } + let connectedCheck; let portToConnectSelect; let signalPressedSelect; @@ -37,13 +59,16 @@ const clickButton = (function() { portToConnectSelect.addEventListener("change", updateOutputPortList); updateOutputPortList(); - document.body.addEventListener("mousedown", function() { + document.body.addEventListener("mousedown", function(event) { + if (isEventToIgnore(event)) return; isClicked = true; }); - document.body.addEventListener("mouseup", function() { + document.body.addEventListener("mouseup", function(event) { + if (isEventToIgnore(event)) return; isClicked = false; }); const touchHandler = function(event) { + if (isEventToIgnore(event)) return; event.preventDefault(); isTouched = event.targetTouches.length > 0; };