-webkit-touch-callout: none; not working in Safari on iOS 26.1

Hi everyone,

I want users not to see the system context menu when long-pressing text on a page in Safari on iOS. I found on MDN that the CSS property -webkit-touch-callout: none; can achieve this. But in reality, it doesn't really work.

MDN documents URL: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/-webkit-touch-callout

Here’s a minimal example:

function preventIOSSafariContextMenu() {
  if (document.getElementById(STYLE_ELEMENT_ID)) return;
  if (!IS_TOUCH_DEVICE) return;

  const style = document.createElement("style");
  style.id = STYLE_ELEMENT_ID;
  style.textContent = `
    html, body {
      -webkit-touch-callout: none !important;
    }
  `;

  (document.head || document.documentElement).appendChild(style);
}

The context menu persists.

Has anyone else encountered this? Is this an intentional change in WebKit, or could it be a regression? If it’s intentional, is there a recommended alternative?

Thanks in advance for any insights!

-webkit-touch-callout: none; not working in Safari on iOS 26.1
 
 
Q