Deshabilitar el menu contextual de selección en iOS Safari

Quiero deshabilitar el menu contextual pnetworkingeterminado que aparece después de que se selecciona un text determinado en iOS Safari (browser web). ¿Es eso posible?

menú contextual destruir

Es posible, mira este ejemplo . Básicamente, la parte importante es establecer los attributes correctos css:

body { -webkit-touch-callout: none !important; } a { -webkit-user-select: none !important; } 

Además, aquí hay una pregunta que resuelve un problema similar.

De acuerdo con los bloques onclick copyr + pegar en Mobile Safari? , si el text está en un elemento que tiene un evento onclick, el menu contextual no se mostrará.

La única manera que encontré fue eliminando la selección y seleccionando nuevamente con javascript. Eche un vistazo a mi código:

 /* prevent ios edit-menu */ if (/(iPad|iPhone|iPod)/g.test(navigator.userAgent)) { !function(){ var target = document.body; // the element where the edit menue should be disabled var preventSelRecursion; document.addEventListener('selectionchange', function(e){ var S = getSelection(); if (!S.rangeCount) return; if (S.isCollapsed) return; var r = S.getRangeAt(0); if (!target.contains(r.commonAncestorContainer)) return; if (preventSelRecursion) return; iosSelMenuPrevent(); }, false); var iosSelMenuPrevent = debounce(function(){ var S = getSelection(); var r = S.getRangeAt(0); preventSelRecursion = true; S = getSelection(); S.removeAllRanges(); setTimeout(function(){ // make remove-add-selection removes the menu S.addRange(r); setTimeout(function(){ preventSelRecursion = false; }); },4); },800); // if no selectionchange during 800ms : remove the menu /* helper-function */ function debounce(fn, delay) { var timer = null; return function () { var context = this, args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); }; } }(); }