<head>
    <meta name="viewport" content="width=device-width">
        <style>
        body {
            width: 100%;
            height: 100%;
            margin: 0;
        }

        div, textarea {
            width: 100%;
            height: 200px;
            font-size: 100px;
            white-space: nowrap;
        }
        </style>
</head>

<body>
    <div id="rich" contenteditable>Hello world</div>
    <textarea id="plain"></textarea>
    <script>
    plain.value="Hello world"

    function deselectText()
    {
        blur();
        getSelection().removeAllRanges();
    }

    function selectRichText()
    {
        deselectText();
        let text = rich.childNodes[0];
        getSelection().setBaseAndExtent(text, 0, text, text.data.length);
    }

    function selectPlainText()
    {
        deselectText();
        plain.focus();
        plain.selectionStart = 0;
        plain.selectionEnd = plain.value.length;
    }
    </script>
</body>
