用于Firefox的innerText polyfill

时间:2010-10-11 15:57:00

标签: javascript firefox html5 cross-browser

在WebKit innerText似乎返回用户看到的元素的文本,这正是我需要的。

Firefox是否有任何polyfill?

例如:

<div id='1'><br> f<div style='display:none'>no</div>oo   bar</div>

<script>
function test(){ return document.getElementById('1').innerText }
</script>

功能测试将返回“\ n foo bar”。

目标是制作一个可编辑的文本区域,其中链接可以点击,标签突出显示,以及在键入时动态创建链接和突出显示的位置。

我的方法是:

在每个键盘上:

  • 保存光标位置
  • 使用innerText
  • 剪切文字
  • 解析innerText
  • 返回的文字的链接和标签
  • 将已解析的文本粘贴到可编辑区域
  • 恢复光标位置

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用Firefox中toString()对象的Selection方法,其行为与innerText非常相似。由于您在示例中提取innerText之前已经保存了光标位置,因此以下内容无需保存和恢复选择,但您应该这样做。

function getInnerText(el) {
    var text = "";
    if (typeof window.getSelection != "undefined") {
        var sel = window.getSelection();
        sel.removeAllRanges();
        var range = document.createRange();
        range.selectNodeContents(el);
        sel.addRange(range);
        text = sel.toString();
        sel.removeAllRanges();
    }
    return text;
}

答案 1 :(得分:1)

Firefox可能会实现innerText,因为Aryeh Gregor正在为innerText编写规范。

请参阅http://aryeh.name/spec/innertext/innertext.htmlhttp://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-February/030179.html