Метод execCommand, применяемый для форматирования выделений, имеет довольно обширный список команд, приводимых в данной статье.
Синтаксис метода execCommand
Метод execCommand объекта document используется для работы с range-объектами, в частности с пользовательскими выделениями. Он принимает три аргумента:
- имя команды: указывает на действия, которые необходимо совершить с выделением.
- флаг: булево значение, указывающее отображать ли интерфейс пользователя, вызванный командой.
- параметры команды
Из этих трех аргументов обязательным является только первый. Пример:
document.execCommand("foreColor", false, "#FF0000");
Полноценная поддержка этого метода появилась только в ИЕ. Пример, иллюстрирующий работу метода execCommand.
Список команд
| Команда | Описание |
|---|---|
| 2D-Position | Команда, позволяющая пользователю передвигать абсолютно позиционированные элементы. |
| AbsolutePosition | Команда, устанавливающая свойство position данного элемента в значение "absolute". |
| BackColor | Команда, устанавливающая или возвращающая цвет фона данного выделеного текста. |
| BlockDirLTR | Не поддерживается. |
| BlockDirRTL | Не поддерживается. |
| Bold | Команда, переключающая состояние шрифта выделенного фрагмента текста между жирным и нормальным. |
| BrowseMode | Не поддерживается. |
| Copy | Команда, помещающая копию данного выделенного фрагмента текста в буфер обмена. |
| CreateBookmark | Команда, создающая "якорь" из выделенного фрагмента текста или возвращает имя "якоря" для выделенного фрагмента текста. |
| CreateLink | Команда, создающая гиперссылку из выделенного фрагмента текста. |
| Cut | Команда, помещающая копию данного выделенного фрагмента текста в буфер обмена и удаляющая этот фрагмент из документа. |
| Delete | Команда, удаляющая выделенный фрагмент текста. |
| DirLTR | Не поддерживается. |
| DirRTL | Не поддерживается. |
| EditMode | Не поддерживается. |
| FontName | Команда, задающая или возвращающая имя шрифта текста. |
| FontSize | Команда, задающая или возвращающая размер шрифта текста |
| ForeColor | Команда, задающая или возвращающая цвет текста. |
| FormatBlock | Команда, форматирующая выделенный фрагмент текста как блок <DIV>, <P> или <SPAN>. |
| Indent | Команда, увеличивающая отступ выделенного фрагмента текста. |
| InlineDirLTR | Не поддерживается. |
| InlineDirRTL | Не поддерживается. |
| InsertButton | Команда, вставляющая в документ кнопку(<BUTTON>). |
| InsertFieldset | Команда, вставляющая в документ группу <FIELDSET>. |
| InsertHorizontalRule | Команда, вставляющая в документ горизонтальную полосу прокрутки. |
| InsertIFrame | Команда, вставляющая в документ "плавающий" фрейм. |
| InsertImage | Команда, вставляющая в документ изображение. |
| InsertInputButton | Команда, вставляющая в документ командную кнопку. |
| InsertInputCheckbox | Команда, вставляющая в документ кнопку-"флажок". |
| InsertInputFileUpload | Команда, вставляющая в документ элемент управления для отправки файла на сервер. |
| InsertInputHidden | Команда, вставляющая в документ скрытое поле. |
| InsertInputImage | Команда, вставляющая в документ изображение как элемент управления. |
| InsertInputPassword | Команда, вставляющая в документ поле ввода пароля. |
| InsertInputRadio | Команда, вставляющая в документ радиокнопку. |
| InsertInputReset | Команда, вставляющая в документ кнопку сброса данных формы. |
| InsertInputSubmit | Команда, вставляющая в документ кнопку отправки данных из формы на сервер. |
| InsertInputText | Команда, вставляющая в документ поле ввода текста. |
| InsertMarquee | Комманда, вставляющая в документ прокручивающийся текст. |
| InsertOrderedList | Комманда, вставляющая в документ нумерованный список. |
| InsertParagraph | Комманда, создающая абзац из выделенного фрагмента текста. |
| InsertSelectDropdown | Комманда, вставляющая в документ выпадающий список. |
| InsertSelectListbox | Комманда, вставляющая в документ список. |
| InsertTextArea | Комманда, вставляющая в документ область редактирования текста. |
| InsertUnorderedList | Комманда, вставляющая в документ маркированный список. |
| Italic | Комманда, переключающая состояние шрифта выделенного фрагмента текста между наклонным и нормальным. |
| JustifyCenter | Комманда, выравнивающая абзац, в который входит фрагмент выделенного текста, по центру. |
| JustifyFull | Не поддерживается. |
| JustifyLeft | Комманда, выравнивающая абзац, в который входит фрагмент выделенного текста, по левому краю. |
| JustifyNone | Не поддерживается. |
| JustifyRight | Комманда, выравнивающая абзац, в который входит фрагмент выделенного текста, по правому краю. |
| LiveResize | Комманда, включающая или выключающая режим мгновенного("живого") отображения размеров или местоположения элементов страницы во время изменения размеров последней. |
| MultipleSelection | Комманда, позволяющая или запрещающая выделение сразу нескольких элементов web-строницы. |
| Open | Не поддерживается. |
| Outdent | Комманда, уменьшающая отступ выделенного фрагмента текста. |
| OverWrite | Комманда, переключающая режим ввода текста между вставкой и заменой. |
| Paste | Комманда, заменяющая данный выделенный фрагмент текста на содержимое буфера обмена. |
| PlayImage | Не поддерживается. |
| Комманда, открывающая диалоговое окно "Печать". | |
| Redo | Не поддерживается. |
| Refresh | Комманда, перезагружающая данный документ с сервера. |
| RemoveFormat | Комманда, удаляющая все тэги форматирования текста из выделенного фрагмента текста. |
| RemoveParaFormat | Не поддерживается. |
| SaveAs | Комманда, сохраняющая текущую web-страницу в файл. |
| SelectAll | Комманда, выделяющая весь документ. |
| SizeToControl | Не поддерживается. |
| SizeToControlHeight | Не поддерживается. |
| SizeToControlWidth | Не поддерживается. |
| Stop | Не поддерживается. |
| StopImage | Не поддерживается. |
| StrikeThrough | Не поддерживается. |
| Subscript | Не поддерживается. |
| Superscript | Не поддерживается. |
| UnBookmark | Комманда, удаляющая элемент закладки из текущего фрагмента выделенного текста. |
| Underline | Комманда, устанавливающая подчёркивание для выделенного фрагмента текста или снимающая это подчёркивание. |
| Undo | Не поддерживается. |
| Unlink | Комманда, удаляющая элемент гиперссылки из текущего фрагмента выделенного текста. |
| Unselect | Комманда, очищающая данный фрагмент выделенного текста. |

1) Вставляем картинку через execCommand("InsertImage"...
2) Находим все изображения с этим урлом в DOM-дереве документа.
3) Отбрасываем те, у которых уж есть id (или какой-то специфическийц параметр).
4) Оставшемуся изображению добавляем необходимые свойства и обработчики событий.
Надеюсь объяснил понятно.
Если не осилите - пишите, набросаю пример.
И как это вставить изменения безболезненно для остального текста, если
<img src="uploadedimages/1-1.gif">,а хотелось бы получить <img src="uploadedimages/1-1.gif" width="16" height="16" border="0" />
вот код
{
this.ExecuteCommand=function(a,b,c){c.slideToggle();return true};
this.PrepareCommand=function(b,c,d,f)
{
var g=c;
$('#'+b.iframe.id+'-'+c+'-ok').click(function()
{
b.frame.focus();
$.ajaxFileUpload(
{
url:f.attr('path'),secureuri:false,fileElementId:b.iframe.id+'-'+g+'-file',dataType:'json',success:function(a,s)
{
if(a.error){alert(a.error)}
else{
b.frame.focus();
$('#'+c).val(''); d.slideUp();
b.doc.execCommand('insertimage',false,a.path+'/'+a.file )
}
},error:function(a,s,e){alert(e+': '+a.responseText)}})});
return true
}
};
dsRTE.RegisterPlugin(new dsRTE_insertImage(),'image');
Можно проставить изображению width и height уже после вставки, приблизительно таким образом:
var iHeight = 16; // Высота изображения
var all_images = b.doc.images; // Вернет коллекцию всех изображений
for (var i = 0; i < all_images.length; i++) {
if (all_images[i].src && all_images[i].src.indexOf(a.path+'/'+a.file) != -1) { // Вы нашли изображение с нужным урлом
if (!all_images[i].width && !all_images[i].height) { // Проверим нет ли у него установленных width & height
all_images[i].width = iWidth;
all_images[i].height = iHeight;
break;
}
}
}
Не проверял, но код имеет все шансы заработать...
http://www.avidansoft.com/_en/scriptsмне очень понравился..но я больше по PHP поэтому и ковыряюсь с яваскриптами методом научного тыка и почитывая мануал...спасибо за быстрый ответ сейчас попробую сам редактор называется Damn Small Rich Text Editor,но кое что приходится напильником.....
что сделал
удалил модуль вв кодов
сделал вывод в ифрэйм dsrte.php
в uploadhandler.php добавил
// get the one and only file element from the FILES array
$file = current( $_FILES );
$upfiledir = $_SERVER['DOCUMENT_ROOT']."/images/img_art/";
$up_file = $upfiledir . basename($file['name']);
// verify upload was successful...
$u=@move_uploaded_file( $file['tmp_name'], "$up_file" );
@$r_img = getimagesize($up_file);
@unlink($_FILES['image']['tmp_name']);
// Изменяем права доступа к файлу
@chmod($up_file, 0644);
if ( $file['error'] == UPLOAD_ERR_OK )
{// and move the file to it's destination
if ($u ==FALSE )
{
$error = t( "Can't move uploaded file into the $Img_Path directory" );
}
}
и
echo to_json( array( 'error' => $error,
'path' => $Img_Path,
'file' => $file['name'],
'tmpfile' => $file['tmp_name'],
'size' => $file['size'],
'w_h_img' => $r_img[3]
) );
в image.js
{
b.frame.focus();
$('#'+c).val(''); d.slideUp();
var s='border="0"';
b.doc.execCommand('insertimage',false,a.path+'/'+a.file + a.w_h_img + s)
}
вот здесь и засада...картинка грузится,но в браузер те в поле ифрейма выводится
<img src="http://www.test.ru/images/img_art/more.gifwidth=%2219%22%20height=%2212%22border=%220%22">
без пробела перед width= и сущности вместо кавычек и пробелов..... просто знаний по яваскрипту явно не хватает ...Прошу Вас о помощи ,заранее спасибо
В качестве третьего аргумента метода execCommand должен стоять ТОЛЬКО! путь к изображению. Зачем вы передаете еще и размер?
var img = document.createElement('img');
img.src ='путь для изображения';
img.id =' ID изображения';
iDoc = (isGecko) ? iframe.contentDocument : iframe.document;
iDoc.body.appendChild(img)
все что касается iDoc берем из этой статьи http://fastcoder.org/articles/?aid=169 если не понятно обращайтесь
код:
ошибка:
Есть ли простой способ вставлять текст без предварительного форматирования, чтобы не приходилось потом его удалять?