Какао webView DOMDocument проблема манипуляции с использованием replaceSelectionWithMarkupString / Node - PullRequest
1 голос
/ 31 января 2012

Я создаю основанное на документе приложение в Какао / Obj-C, которое позволит пользователю выбрать слово в веб-представлении и нажать кнопку, которая обернет выбранный текст в случайный хеш-узел. Например:

Этот документ отображается в моем веб-представлении:

<html>
<body>
<div>Hello to everybody</div>
</body>
</html>

Предположим, что слово Hello выбрано пользователем в webView, и они нажали кнопку на интерфейсе, который вызывает эту функцию:

NSString *randString = [myRandStringGenerator generateString];
NSString *selectedWords = [[webView getSelectedDOMRange] toString];
NSString *toWrite = [NSString stringWithFormat: @"<%@>%@</%@>", randString, selectedWords, randString];
[webView replaceSelectionWithMarkupString:toWrite];

Эта функция приведет к DOMDocument, который идентичен оригиналу. ОДНАКО , если выделение НЕ содержит первый символ в данном узле (в данном случае это так), функция работает отлично!

Таким образом, если пользователь выбирает «ello to» в веб-представлении и вызывается вышеуказанная функция, вывод будет:

<html>
<body>
<div>H<kljsdhfla>ello to</kljsdhfla> everybody</div>
</body>
</html>

Так что мой вопрос - почему эта функция завершается ошибкой, когда выбранный DOMRange включает первый символ внутри #text из DOMNode и завершается успешно, если его нет?

Кроме того - я пробовал эту же функцию, используя функцию [webView replaceSelectionWithNode:myNode] с точно таким же эффектом.

...