Launch Handler API Demo - Online Control App Launch Behavior
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
UD5 Toolkit
Welcome to the Selection & Range API Demo! This is an interactive playground where you can explore how the Selection and Range APIs work in the browser.
Try selecting some text with your mouse or keyboard. You can also click this link to see how anchor and focus behave. The contenteditable area allows you to modify text and observe how the DOM structure changes.
"The Selection API represents the user's selection, while the Range API provides granular control over document fragments."
Here is a bold red text and some inline code for variety. You can also find highlighted spans within the content.
Use presets or define a custom range to programmatically set the selection.
These operations modify the content. Use with care.
window.getSelection() and reflects what the user sees highlighted on screen. The Range API, on the other hand, represents a contiguous fragment of a document—defined by a start and end boundary. A Selection can contain multiple Ranges (though in practice, most browsers support only one). Use Selection for reading user intent and Range for precise DOM manipulation.
window.getSelection().toString() to get the plain text of the current selection. For more detailed information, access the Range via window.getSelection().getRangeAt(0) to inspect start/end containers, offsets, and bounding rectangles.
selection.isCollapsed or range.collapsed to determine this. Collapsed ranges are useful for inserting content at a specific point.
range.setStart(node, offset) and range.setEnd(node, offset), then apply it to the Selection: const sel = window.getSelection(); sel.removeAllRanges(); sel.addRange(range);. The node can be a text node (offsets are character positions) or an element node (offsets are child node indices).
DocumentFragment that you can re-insert elsewhere—useful for cut/paste or drag-and-drop functionalities. Both methods collapse the range after execution.
document.onselectionchange event (or use document.addEventListener('selectionchange', callback)). This event fires whenever the Selection object changes. Inside the handler, check window.getSelection() to get updated details. Note: this event can fire very frequently—debounce if needed.
selection.addRange() without removing existing ones), while Chromium-based browsers always replace. For consistent behavior, always call selection.removeAllRanges() before adding a new range.
Configure how your PWA launches: focus existing or create new. Test with the launch_handler manifest field.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Build a horizontal scroll‑snap container with configurable snap‑type and alignment. Perfect for image galleries.
Compare all CSS easing presets side by side on a bouncing ball. See which curve fits your UI animation.
Query the permission state of camera, microphone, geolocation, and more. See the response and learn the API.
Unified input demo: see pressure, tilt, and type from any pointer. Compare pointerType values. Essential for drawing apps.
Toggle a screen wake lock to prevent the device from dimming or sleeping. See the lock state and learn the API.
Decode an image progressively using the ImageDecoder API. See partial results and metadata. Modern alternative to <img>.
Decode individual video frames from a local file using the VideoDecoder API. Step through frames. Cutting‑edge browser feature.
Experiment with the Federated Credential Management API. Simulate a sign‑in flow without third‑party cookies. Privacy‑first.
Request HID devices and list them. Read input reports and send output. For custom hardware and controllers.
Request permission and detect when the user is idle (away from keyboard). See screen lock state. For native‑like apps.
Demonstrate how the Web OTP API automatically reads one‑time codes from SMS (mobile). Simulation with a fake SMS input.
Acquire and release locks across tabs. Prevent race conditions in IndexedDB or localStorage. Visual queue and lock state.
Register a periodic background sync to fetch fresh data even when the tab is closed. Understand the API and limits.
Connect a gamepad and see all button presses and axis movements visually. Check that every input is detected correctly.
Trigger different vibration patterns on mobile devices. Test if your phone supports haptic feedback. Simple demo.
Display your effective connection type (4g, 3g, etc.) and downlink speed using the Navigator API. Adapt your app accordingly.
See your device's battery level, charging status, and discharge time using the Battery Status API. Fun utility.
Check current screen orientation and test the lock API. Useful for mobile web apps. Demo with code.
Test the Fullscreen API: request fullscreen on a colored div, detect changes, and copy the JavaScript boilerplate.
Test the new HTML popover attribute for creating accessible tooltips, menus, and dialogs without JavaScript. Copy code snippets.
See the View Transitions API in action. Cross‑fade and morph between two states. Copy the JavaScript starter code.
Experiment with the Async Clipboard API: read/write text and images from the clipboard. Verify permissions and see demo code.
Test the Web Share API by sharing text, links, and files directly from the browser. Check compatibility and see example code.
Enter an API URL and quickly check its HTTP status code and response time. See response headers and body. Browser fetch.
Pick a method, URL, headers, and body, then send an HTTP request directly from your browser. Debug APIs easily.
Find safe mixing ratios for the classic elephant toothpaste demonstration. Volume adjustments for different container sizes.
Generate random JSON data with customizable fields (users, products, orders). Useful for frontend mocking. All local.
Execute GraphQL queries against any endpoint with variables and headers. Explore schema via introspection. All requests made directly from your browser.