瀏覽代碼

refactor(js): remove an outdated check for `{passive: true}`

According to https://caniuse.com/?search=passive,
all browsers released after 2016 do support passive event listeners,
so no need to check for its presence.
Julien Voisin 1 年之前
父節點
當前提交
8c3a9184ac
共有 2 個文件被更改,包括 12 次插入31 次删除
  1. 0 19
      internal/ui/static/js/dom_helper.js
  2. 12 12
      internal/ui/static/js/touch_handler.js

+ 0 - 19
internal/ui/static/js/dom_helper.js

@@ -25,23 +25,4 @@ class DomHelper {
         const elements = document.querySelectorAll(selector);
         return [...elements].filter((element) => this.isVisible(element));
     }
-
-    static hasPassiveEventListenerOption() {
-        var passiveSupported = false;
-
-        try {
-            var options = Object.defineProperty({}, "passive", {
-                get: function() {
-                    passiveSupported = true;
-                }
-            });
-
-            window.addEventListener("test", options, options);
-            window.removeEventListener("test", options, options);
-        } catch(err) {
-            passiveSupported = false;
-        }
-
-        return passiveSupported;
-    }
 }

+ 12 - 12
internal/ui/static/js/touch_handler.js

@@ -158,26 +158,26 @@ class TouchHandler {
     }
 
     listen() {
-        const hasPassiveOption = DomHelper.hasPassiveEventListenerOption();
+        const eventListenerOptions = { passive: true };
 
         document.querySelectorAll(".entry-swipe").forEach((element) => {
-            element.addEventListener("touchstart", (e) => this.onItemTouchStart(e), hasPassiveOption ? { passive: true } : false);
-            element.addEventListener("touchmove", (e) => this.onItemTouchMove(e), hasPassiveOption ? { passive: false } : false);
-            element.addEventListener("touchend", (e) => this.onItemTouchEnd(e), hasPassiveOption ? { passive: true } : false);
-            element.addEventListener("touchcancel", () => this.reset(), hasPassiveOption ? { passive: true } : false);
+            element.addEventListener("touchstart", (e) => this.onItemTouchStart(e), eventListenerOptions);
+            element.addEventListener("touchmove", (e) => this.onItemTouchMove(e));
+            element.addEventListener("touchend", (e) => this.onItemTouchEnd(e), eventListenerOptions);
+            element.addEventListener("touchcancel", () => this.reset(), eventListenerOptions);
         });
 
         const element = document.querySelector(".entry-content");
         if (element) {
             if (element.classList.contains("gesture-nav-tap")) {
-                element.addEventListener("touchend", (e) => this.onTapEnd(e), hasPassiveOption ? { passive: true } : false);
-                element.addEventListener("touchmove", () => this.reset(), hasPassiveOption ? { passive: true } : false);
-                element.addEventListener("touchcancel", () => this.reset(), hasPassiveOption ? { passive: true } : false);
+                element.addEventListener("touchend", (e) => this.onTapEnd(e), eventListenerOptions);
+                element.addEventListener("touchmove", () => this.reset(), eventListenerOptions);
+                element.addEventListener("touchcancel", () => this.reset(), eventListenerOptions);
             } else if (element.classList.contains("gesture-nav-swipe")) {
-                element.addEventListener("touchstart", (e) => this.onContentTouchStart(e), hasPassiveOption ? { passive: true } : false);
-                element.addEventListener("touchmove", (e) => this.onContentTouchMove(e), hasPassiveOption ? { passive: true } : false);
-                element.addEventListener("touchend", (e) => this.onContentTouchEnd(e), hasPassiveOption ? { passive: true } : false);
-                element.addEventListener("touchcancel", () => this.reset(), hasPassiveOption ? { passive: true } : false);
+                element.addEventListener("touchstart", (e) => this.onContentTouchStart(e), eventListenerOptions);
+                element.addEventListener("touchmove", (e) => this.onContentTouchMove(e), eventListenerOptions);
+                element.addEventListener("touchend", (e) => this.onContentTouchEnd(e), eventListenerOptions);
+                element.addEventListener("touchcancel", () => this.reset(), eventListenerOptions);
             }
         }
     }