Mobile drag-to-selection creates inconsistent ranges
OS: iOS 16.0+ · Device: iPhone or iPad Any · Browser: Safari 16.0+ · Keyboard: Default (English)
Open case →Scenario
Mobile drag-to-selection creates inconsistent ranges
Visual view of how this scenario connects to its concrete cases and environments. Nodes can be dragged and clicked.
Each row is a concrete case for this scenario, with a dedicated document and playground.
| Case | OS | Device | Browser | Keyboard | Status |
|---|---|---|---|---|---|
| ce-0541-mobile-selection-drag-ios-safari | iOS 16.0+ | iPhone or iPad Any | Safari 16.0+ | Default (English) | draft |
Open a case to see the detailed description and its dedicated playground.
OS: iOS 16.0+ · Device: iPhone or iPad Any · Browser: Safari 16.0+ · Keyboard: Default (English)
Open case →Other scenarios that share similar tags or category.
On mobile devices, selecting text in a contenteditable region using touch is difficult. The selection handles are small and hard to grab, and the selection range may change unexpectedly when trying to adjust it.
When a contenteditable element has CSS backdrop-filter applied, rendering may be affected. Text may appear blurry, selection may not render correctly, and performance may be degraded, especially on mobile devices.
On mobile devices, the combination of enterkeyhint and inputmode attributes may affect Enter key behavior inconsistently on contenteditable elements. The Enter key may insert line breaks when it should perform an action, or vice versa.
On iPhone/iPad Safari, when entering text or pressing "return" multiple times in a contenteditable element, the software keyboard appears but hides the text being typed. The page doesn't auto-scroll to keep text visible. Works fine on Android and other browsers.
On iOS Safari, input and beforeinput can fire with inputType 'insertText' multiple times (e.g. voice dictation) or with inputType undefined/null. Forcing re-render or changing selection during this flow desyncs the editor model from the DOM and can permanently break subsequent input.
Have questions, suggestions, or want to share your experience? Join the discussion below.