Как реализовать замену текста с помощью IHTMLTxtRange? - PullRequest
1 голос
/ 30 мая 2011

Я использую экземпляр объекта IHTMLTxtRange, чтобы заменить выбор текущего пользователя в браузере.

Сегодня я столкнулся со следующей проблемой.Это моя разметка:

<body><p><a href="http://www.google.com">http://www.google.com</a></p></body>

Выбор пользователя (html), как сообщается экземпляром IHMLTxtRange (диапазон):

<a href="http://www.google.com">http://www.google.com</a>

Всякий раз, когда я выполняю range.replaceHTML("test"); результатis:

<body><p><a href="http://www.google.com">test</a></p></body>

Такое поведение, по-видимому, применимо и к таким сценариям:

<body><p><b>some text</b></p></body>

Может ли кто-нибудь помочь мне разработать последовательную стратегию замены выбора?Я имею в виду, что выделение текста работает, как и ожидалось.

Спасибо


Обновление 10/05/2012: выяснил опытную проблему

Возвращениетеперь я понимаю, что проблема не была правильно объяснена.Я ожидал заменить всю строку <a href="http://www.google.com">http://www.google.com</a> на test.Вместо этого innerText якоря был заменен, оставив разметку нетронутой.

1 Ответ

1 голос
/ 05 января 2012

Обзор решения

Наконец, я нашел ответ на этот вопрос через Разработка расширений Internet Explorer форумы.

Какпримечание: в ответе , который я получил , эта проблема также возникает при использовании метода pasteHTML для объекта IHTMLTxtRange.Существует даже закрытая проблема , описывающая эту проблему на веб-сайте Microsoft Connect.

Обходной путь

Я исправил проблему, основываясь на полученном ответе, проверяя, является ли текущий элемент в диапазоне привязкой: в этом случае родительский элемент текущего элемента удаляется, и на его место вставляется нужный текст.

Я должен был сделать эту проверкутакже для элементов оформления: теги <B>, <I> и <FONT>.

Обязательно ознакомьтесь с вопросом, на который я получил ответ, для получения дополнительной информации.

...