From 133e70ea89f7b5f17658ae20da62384966845c7b Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Tue, 3 Feb 2026 23:23:12 -0800 Subject: [PATCH] Disables TOC and scrollspy on mobile viewports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prevents mobile scroll “fighting” by limiting scrollspy and the page TOC to desktop-sized viewports. Removes any existing TOC markup and related layout class when below the desktop breakpoint to avoid interfering with touch scrolling. --- docs/assets/js/page-toc.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/assets/js/page-toc.js b/docs/assets/js/page-toc.js index 8eeba41..d51b6db 100644 --- a/docs/assets/js/page-toc.js +++ b/docs/assets/js/page-toc.js @@ -10,6 +10,14 @@ return true; } + function IsDesktopViewport() { + try { + return window.matchMedia && window.matchMedia('(min-width: 66.5rem)').matches; + } catch (e) { + return false; + } + } + function GetHeadings(container) { var headings = container.querySelectorAll('h2, h3'); var results = []; @@ -104,6 +112,11 @@ return; } + /* Scrollspy is desktop-only; on mobile it can cause "fighting" scroll behavior */ + if (!IsDesktopViewport()) { + return; + } + var headingElements = []; for (var i = 0; i < headings.length; i++) { var el = document.getElementById(headings[i].id); @@ -221,6 +234,21 @@ return; } + /* Desktop-only TOC: on mobile it interferes with scrolling */ + if (!IsDesktopViewport()) { + var existingWrap = document.querySelector('.main-content-wrap'); + if (existingWrap) { + var existingToc = existingWrap.querySelector('.page-toc'); + if (existingToc) { + existingToc.remove(); + } + + existingWrap.classList.remove('has-page-toc'); + } + + return; + } + var main = document.querySelector('.main-content main'); if (!main) { return;