保存选择以供以后在JS中使用

时间:2011-07-18 00:43:29

标签: javascript html selection textselection getselection

我在iframe中使用了一个富文本编辑器,其中包含了对小块文本进行语法高亮显示的ifMode。我希望更新keyup上的突出显示,但是搞乱DOM会导致帧模糊,因此每次按下一个键时,插入符号就会消失,你就不能再键入了。如果解析器可以记住插入符的位置,然后重新聚焦iframe并替换插入符号,则这不会成为问题。我已经阅读了getSelection()及其亲戚,但显然onkeyup删除了选择,至少在Chrome中 - 在onkeyup中调用getSelection()始终会产生空选择。有办法解决这个问题吗?

这就是我所拥有的:

<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>

2 个答案:

答案 0 :(得分:0)

我建议使用其他代码荧光笔。例如CodeMirror

答案 1 :(得分:0)

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