Socket
Book a DemoInstallSign in
Socket

rangefix

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rangefix

Workaround for browser bugs in Range.prototype.getClientRects and Range.prototype.getBoundingClientRect.

latest
Source
npmnpm
Version
0.3.1
Version published
Weekly downloads
105
50%
Maintainers
1
Weekly downloads
 
Created
Source

Workaround for browser bugs in Range.prototype.getClientRects and Range.prototype.getBoundingClientRect.

In particular:

  • Chrome <= 54: Selections spanning multiple nodes return rectangles for all the parents of the endContainer. See https://code.google.com/p/chromium/issues/detail?id=324437.
  • Chrome 55: Images get no rectangle when they are wrapped in a node and you select across them.
  • Safari: Similar to the Chrome <= 54 bug, but only triggered near the edge of a block node, or programmatically near an inline node.
  • Firefox: Similar to the Chrome <= 54 bug, but only triggered near the edge of a inline node
  • Chrome: Selection across a space which spans two lines results in a bounding rectangle which doesn't cover all the individual rectangles.
  • Firefox: Selections across a space which spans two lines, and text on the next line results in a bounding rectangle which doesn't cover all the individual rectangles.

There are no known issues in Edge. When no issues are detected the library will fall through to native behaviour.

Install

$ npm install rangefix

Usage

CommonJS

var RangeFix = require( 'rangefix' );

AMD

define( [ 'rangefix' ], function ( Rangefix ) {
	// ...
} );

Browser global

<script src="path/to/rangefix.js"></script>

API

Replace instances of Range.prototype.getClientRects/getBoundingClientRect with RangeFix.getClientRects/getBoundingClientRect:

var range = document.getSelection().getRangeAt( 0 );

// Before
var rects = range.getClientRects();
var boundingRect = range.getBoundingClientRect();

// After
var rects = RangeFix.getClientRects( range );
var boundingRect = RangeFix.getBoundingClientRect( range );

Demo

http://edg2s.github.io/rangefix/

FAQs

Package last updated on 25 Jun 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts