JSFiddle - React, Tailwind, and code Playground
HTML
<html onmousedown="return false;" >
<div id="ibooks" >
Magna pariatur eu culpa elit, beef id sunt duis pancetta. Excepteur tempor jerky beef ribs, pork rump filet mignon culpa consequat shank boudin ex voluptate turducken. Cow qui ground round enim non. Consectetur corned beef consequat biltong exercitation proident. In pork chop andouille filet mignon sint ribeye, short ribs beef ribs enim. Laborum do leberkas, id hamburger in ball tip incididunt.
</div>
</html>
JavaScript
var act=false;
function sel(e)
{
if(!act)return;
var endX=e.pageX,endY=e.pageY,startX=tempX,startY=tempY,start,end,range=null;
if(endY<startY&&(endX<startX||endX>startX))
{
var t=startX;
startX=endX;
endX=t;
t=startY;
startY=endY;
endY=t;
}
if(typeof document.caretPositionFromPoint!="undefined")
{
start=document.caretPositionFromPoint(startX,startY);
end=document.caretPositionFromPoint(endX,endY);
range=document.createRange();
range.setStart(start.offsetNode,start.offset);
range.setEnd(end.offsetNode,end.offset);
}
else if(typeof document.caretRangeFromPoint!="undefined")
{
start=document.caretRangeFromPoint(startX,startY);
end=document.caretRangeFromPoint(endX,endY);
range=document.createRange();
range.setStart(start.startContainer,start.startOffset);
range.setEnd(end.startContainer,end.startOffset);
}
if(range!==null&&typeof window.getSelection!="undefined")
{
var s=window.getSelection();
s.removeAllRanges();
s.addRange(range);
}
else if(typeof document.body.createTextRange!="undefined")
{
range=document.body.createTextRange();
range.moveToPoint(startX,startY);
var endRange=range.duplicate();
endRange.moveToPoint(endX,endY);
range.setEndPoint("EndToEnd",endRange);
range.select();
}
}
function del()
{
if(window.getSelection)
{
if(window.getSelection().empty)window.getSelection().empty();
else if(window.getSelection().removeAllRanges)window.getSelection().removeAllRanges();
}
else if(document.selection)document.selection.empty();
}
var tempX,tempY;
var...