Avoid using getBoundingClientRect to calculate height (#4001)
parent
8fecd80108
commit
63b77f2320
@ -0,0 +1,21 @@ |
||||
|
||||
// Get the bounding client rect from an IntersectionObserver entry.
|
||||
// This is to work around a bug in Chrome: https://crbug.com/737228
|
||||
|
||||
let hasBoundingRectBug; |
||||
|
||||
function getRectFromEntry(entry) { |
||||
if (typeof hasBoundingRectBug !== 'boolean') { |
||||
const boundingRect = entry.target.getBoundingClientRect(); |
||||
const observerRect = entry.boundingClientRect; |
||||
hasBoundingRectBug = boundingRect.height !== observerRect.height || |
||||
boundingRect.top !== observerRect.top || |
||||
boundingRect.width !== observerRect.width || |
||||
boundingRect.bottom !== observerRect.bottom || |
||||
boundingRect.left !== observerRect.left || |
||||
boundingRect.right !== observerRect.right; |
||||
} |
||||
return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect; |
||||
} |
||||
|
||||
export default getRectFromEntry; |
Loading…
Reference in new issue