У меня проблема. Я уже некоторое время пытаюсь заняться этим и готов взорваться. Вот мое требование:
У меня есть внешняя панель инструментов (не часть YUI) над редактором, которую я хочу использовать для вставки тегов HTML. Пользователь должен иметь возможность щелкнуть ссылку на панели инструментов, после чего может произойти несколько вещей:
- Если есть какой-либо выделенный текст, этот текст помещается в тег HTML
- Если выделенного текста нет, в редактор вставляется пустой тег HTML
- Независимо от сценария, курсор ДОЛЖЕН быть помещен в новый элемент, чтобы, когда пользователь вводит больше текста, он находился в новом элементе
Функциональность очень похожа на нажатие кнопок "B" или "U" на панели инструментов редактора (теперь, когда я использую этот редактор, он также делает это хорошо :-)). Сохраняет все красиво. Пока я могу сделать 1 или 2, но не 3. Шаг 3 ОЧЕНЬ важен, потому что без него пользовательский опыт сильно страдает. Мне очень нужна ваша помощь для ее реализации. Ниже приведена упрощенная версия метода, который выполняет вставку (просто для простоты вставка DIV). this._oEditor - локальный экземпляр редактора YUI:
this._insertElement = function() {
var sSelection = this._oEditor._getSelection(); // Attempt to get selected text from the editor
if (sSelection == '') sSelection = ' '; // If nothing was selected, insert a non-breaking space
var sNewElt = '<div>' + sSelection + '</div>';
this._oEditor.execCommand('inserthtml', sNewElt);
this._oEditor.focus(); // This gives the editor focus, but places cursor in the beginning!
}
Что я должен сделать, чтобы поместить курсор в правильное положение? Это вообще возможно? Кроме того, если есть лучший способ реализовать это, я все для этого. Спасибо!