चूंकि आपने केवल रेंडर किया था, हां आप कर सकते हैं। आप इस की तर्ज पर कुछ कर सकते हैं:
function render(){
var inp = document.getElementById("box");
var data = `
<svg xmlns="http://www.w3.org/2000/svg" width="${inp.offsetWidth}" height="${inp.offsetHeight}">
<foreignObject width="100%" height="100%">
<div xmlns="http://www.w3.org/1999/xhtml"
style="font-family:monospace;font-style: normal; font-variant: normal; font-size:13.3px;padding:2px;;">
${inp.value} <i style="color:red">cant touch this</i>
</div>
</foreignObject>
</svg>`;
var blob = new Blob( [data], {type:'image/svg+xml'} );
var url=URL.createObjectURL(blob);
inp.style.backgroundImage="url("+URL.createObjectURL(blob)+")";
}
onload=function(){
render();
ro = new ResizeObserver(render);
ro.observe(document.getElementById("box"));
}
#box{
color:transparent;
caret-color: black;
font-style: normal;/*must be same as in the svg for caret to align*/
font-variant: normal;
font-size:13.3px;
padding:2px;
font-family:monospace;
}
<textarea id="box" oninput="render()">you can edit me!</textarea>
यह ऐसा करता है ताकि एक
textarea
HTML रेंडर करेगा! आकार बदलने के दौरान, कक्षाओं का सीधे उपयोग करने में असमर्थता और यह सुनिश्चित करने के लिए कि डिव में
svg
एक ही प्रारूप है
textarea
, कैरेट के लिए सही ढंग से संरेखित करने के लिए, यह काम करता है!