JSFiddle - React, Tailwind, and code Playground
HTML
<p>Bacon ipsum dolor sit amet pork chop ground round est jowl elit andouille fugiat, rump dolore pariatur non commodo mollit incididunt ut. Bresaola id ut in adipisicing, sunt non ex aliqua ribeye ball tip pancetta laboris nulla. Reprehenderit pork veniam aliquip tail, eiusmod et aliqua consectetur. Tempor bacon deserunt venison, fugiat flank esse jowl proident magna. Quis anim bacon elit est, biltong adipisicing bresaola non shoulder t-bone. Bacon sint kielbasa, sed short loin tongue spare ribs. Prosciutto enim turducken culpa, capicola elit venison adipisicing dolor tail pig pork.
<p>Ball tip tenderloin jowl, turkey tongue quis ut. Pork loin do sint aliquip, aute duis dolore. Et meatloaf ham hock, frankfurter sirloin voluptate filet mignon short ribs rump anim fugiat spare ribs velit shankle. Prosciutto non fatback, aute spare ribs ut bresaola meatloaf capicola shankle tongue chuck veniam incididunt.
<p>Duis anim meatball fatback ribeye ullamco pork loin elit pig corned beef frankfurter andouille ball tip. Nisi ea magna ut, chuck eu ex adipisicing sirloin cillum sunt ut nulla jowl id. Chicken filet mignon in boudin beef ham hock ground round chuck shank reprehenderit pork chop sed. Incididunt beef ribs in et hamburger pig drumstick cillum boudin fatback ea ground round meatloaf pork rump. Voluptate aliqua tongue jerky magna culpa velit, meatloaf cupidatat sausage mollit. Eiusmod exercitation ball tip, culpa flank strip steak filet mignon consequat kielbasa in laborum.
<p>Bresaola shank pork exercitation, dolor chicken filet mignon turducken aliqua ut aliquip sed minim cupidatat andouille. Laboris nulla pork chop cow cupidatat chicken pastrami beef magna pancetta dolore filet mignon aliqua. Excepteur hamburger est shoulder exercitation beef. Pork eu consectetur t-bone, ribeye pork loin duis velit chuck anim ullamco aute. Anim boudin meatball laboris, cillum velit elit. Minim deserunt tri-tip meatball incididunt cillum short ribs spare ribs magna. Cupidatat...
JavaScript
var img = document.createElement("img");
img.src = "http://jsfiddle.net/img/logo.png";
var x = 200, y = 200;
var range;
// Try the standards-based way first
if (document.caretPositionFromPoint) {
var pos = document.caretPositionFromPoint(x, y);
range = document.createRange();
range.setStart(pos.offsetNode, pos.offset);
range.collapse();
range.insertNode(img);
}
// Next, the WebKit way
else if (document.caretRangeFromPoint) {
range = document.caretRangeFromPoint(x, y);
range.insertNode(img);
}
// Finally, the IE way
else if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToPoint(x, y);
var spanId = "temp_" + ("" + Math.random()).slice(2);
range.pasteHTML('<span id="' + spanId + '"> </span>');
var span = document.getElementById(spanId);
span.parentNode.replaceChild(img, span);
}