5

我在带有 designMode 的 iframe 中有一个富文本编辑器,可以对小块文本进行语法高亮显示。我希望它更新 keyup 上的突出显示,但是弄乱 DOM 会导致框架模糊,因此每次你按下一个键时,插入符号就会消失,你不能再打字了。如果解析器能够记住插入符号的位置,然后重新聚焦 iframe 并替换插入符号,那将不是问题。我已经阅读了getSelection()它的亲戚,但显然 onkeyup 删除了选择,至少在 Chrome 中 -getSelection()在 onkeyup 内调用总是会产生一个空选择。有没有解决的办法?

这就是我所拥有的:

<iframe>
    <html>
        <head>
            <script>
                function parse() {
                    if(window.getSelection().type != 'None') {
                        var range = window.getSelection().getRangeAt(0);
                    }
                    var text = document.body.textContent;
                    //Parse text, output is stored in newtext
                    document.body.innerHTML = newtext;
                    document.body.focus();
                    if(range) {
                        window.getSelection().removeAllRanges();
                        window.getSelection().addRange(range);
                    }
                }
            </script>
        </head>
        <body onload="document.designMode = 'on'; document.onkeyup = parse;">
            Text entered appears here
        </body>
    </html>
</iframe>
4

2 回答 2

0

不确定您是否愿意使用 JS 框架,但 mootools 有一些非常漂亮的选择实用程序(例如,http ://mootools.net/docs/more/Element/Element.Forms#Element:getCaretPosition )

于 2011-11-07T20:34:20.257 回答
0

我建议使用其他一些代码荧光笔。例如,像CodeMirror一样。

于 2011-07-28T15:57:52.813 回答