Внутренний текст Polyfill для Firefox - PullRequest
3 голосов
/ 11 октября 2010

В WebKit innerText, похоже, возвращает текст элемента, который пользователь видит , и это именно то, что мне нужно.

Есть ли в Firefox полифилы?

Например:

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

1 голос
/ 15 февраля 2011

Firefox может реализовывать innerText, поскольку Арье Грегор пишет спецификацию для innerText.

См. http://aryeh.name/spec/innertext/innertext.html и http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-February/030179.html

1 голос
/ 11 октября 2010

Вы можете использовать метод toString() объекта Selection в Firefox, который во многом похож на 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...