|
|
| 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. */ |
|
| |
|
| |
| /**
| |
| * Prevent Leaflet maps from auto-scrolling page on load
| |
| * by removing focusability from the map container
| |
| */
| |
| (function() {
| |
| 'use strict';
| |
|
| |
| function disableMapFocus() {
| |
| var maps = document.querySelectorAll('.maps-leaflet');
| |
| maps.forEach(function(map) {
| |
| map.removeAttribute('tabindex');
| |
| });
| |
| }
| |
|
| |
| // Run immediately and again after a delay (maps initialize asynchronously)
| |
| disableMapFocus();
| |
| setTimeout(disableMapFocus, 500);
| |
| })();
| |
|
| |
|
| |
| // Log whatever ends up focused (and where it is) during/after load
| |
| window.addEventListener("focusin", (e) => {
| |
| const el = e.target;
| |
| console.log("[focusin]", el, "id=", el.id, "class=", el.className);
| |
| console.log(" activeElement:", document.activeElement);
| |
| console.log(" scrollY:", window.scrollY);
| |
| }, true);
| |
|
| |
| // Also catch programmatic focus calls (helpful if some code calls .focus())
| |
| (() => {
| |
| const orig = HTMLElement.prototype.focus;
| |
| HTMLElement.prototype.focus = function (...args) {
| |
| console.log("[focus() called on]", this, "id=", this.id, "class=", this.className);
| |
| return orig.apply(this, args);
| |
| };
| |
| })();
| |