Fixes for imposter element and range y position
Hides the imposter element once we've finished using it and checks the y position for the range against the point given
This commit is contained in:
parent
f0e9716aa5
commit
0cc5566886
@ -55,6 +55,8 @@ function docImposterCreate(element) {
|
||||
document.body.appendChild(imposter);
|
||||
imposter.scrollTop = element.scrollTop;
|
||||
imposter.scrollLeft = element.scrollLeft;
|
||||
|
||||
return imposter;
|
||||
}
|
||||
|
||||
function docImposterDestroy() {
|
||||
@ -65,11 +67,12 @@ function docImposterDestroy() {
|
||||
|
||||
function docRangeFromPoint(point) {
|
||||
const element = document.elementFromPoint(point.x, point.y);
|
||||
let imposter = null;
|
||||
if (element) {
|
||||
if (element.nodeName === 'IMG' || element.nodeName === 'BUTTON') {
|
||||
return new TextSourceElement(element);
|
||||
} else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
|
||||
docImposterCreate(element);
|
||||
imposter = docImposterCreate(element);
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,6 +89,14 @@ function docRangeFromPoint(point) {
|
||||
}
|
||||
|
||||
const range = document.caretRangeFromPoint(point.x, point.y);
|
||||
|
||||
if(imposter !== null) imposter.style.zIndex = -2147483646;
|
||||
|
||||
const rect = range.getClientRects()[0];
|
||||
if (point.y > rect.bottom + 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (range) {
|
||||
return new TextSourceRange(range);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user