У меня что то типа текстового редактора, в качестве рабочей области используется iframe, необходимо по нажатию кнопки вставить в то место где находится курсор (текстовый, не мышиный) определенный текст. Подскажите кто знает.
???????????????? хе, код своей страницы????????????? чо я там не видел???????????? мне нужно добавить это на свою страницу!!!!!!!!!!!!
Уменьшь количество знаков препинания в своем высказывании. Тебе сказали русским языком, Читай внимательней.
Код (Text): function storeCaret(textEl){ var obj = document.getElementById(textEl); if (obj.createTextRange) { obj.caretPos = document.selection.createRange().duplicate(); } } DUCK, дальше надо или так понятно?
Еще разок по-внимательнее на код посмотри: Код (Text): function storeCaret(textEl){ var obj = document.getElementById(textEl); if (obj.createTextRange) { obj.caretPos = document.selection.createRange().duplicate(); } }
чото я ничо не понимаю тут, объясните на пальцах как нить ттут вот нашел еще следущее <textarea name=test onselect="storeCaret(this)" onclick="storeCaret(this)" onkeyup="storeCaret(this)"> или <input type=text name=test onselect="storeCaret(this)" onclick="storeCaret(this)" onkeyup="storeCaret(this)"> Функция storeCaret: function storeCaret(element) { if (document.selection && document.selection.createRange) element.caretPos=document.selection.createRange().duplicate(); } Функция insertText, которая вставляет текст: function insertText(element,text) { if (element && element.caretPos) element.caretPos.text=text; else if (element && element.selectionStart+1 && element.selectionEnd+1) element.value=element.value.substring(0,element.selectionStart)+text+e lement.value.substring(element.selectionEnd,element.value.length); else if (element) element.value+=text; }
DUCK ну вот и молодец, нашел все что надо должно быть все понятно: При нажатии на любую клавишу запоминается позиция курсора, если браузер поддерживает конечно. При вставке объекта в наше поле ф-ия insertText смотрит: если существует наша caretPos, то вставляем текст в нужное место, иначе (другой браузер) используем те функции вставки, которые доступны... так скать кроссбраузерность
у меня такой код не работает, может дело все в iframe? тут то для textarea вроде написано. и что мы передаем функции insertText в качестве element?
вроде чото получается но теперь нужно чтобы не просто текст добавлялся а HTML код. caretPos.text=text - уже не канает а такое: caretPos.htmlText=text - не работает что делать?
Копируй эту функцию себе в скрипт и вызывай ее с чем угодно: about(caretPos); Код (Text): function about(obj){ var wnd = window.open("",'help'); wnd.document.write('<pre>'); var str = ''; var tab = ' '; for (i in obj){ cont = obj[i]+''; if (cont.substring(0,8) == 'function'){ cont = '<u><span onclick="el=document.getElementById(\''+i+'\'); if (el.style.display==\'none\') {el.style.display=\'\'} else {el.style.display=\'none\'}">function()</span></u>'+'<div id='+i+' style="background-color: #DDFFEE; display: none;">'+cont+'</div>'; } str = i + ''; tab = ' '; wnd.document.write(i+tab+'= '+cont+'\n'); } wnd.document.write('</pre>'); }
у меня там все работает, этот код мне не нужен, скажите лучше как вместо обычного текста вставить html код
нужно скопировать себе в скрипт эту функцию, а затем имея любой объект JS выполнить эту функцию. например: about(document);
скопировад, работает, но не очень понятно: открывается окно а в нем текстом черным по белому написано onbeforeunload = null onafterprint = null top = [object] location = about:blank parent = [object] offscreenBuffering = auto frameElement = [object] onerror = null screen = [object] event = null clipboardData = [object] onresize = null defaultStatus = onblur = null window = [object] onload = null onscroll = null screenTop = 510 onfocus = null Option = [object] length = 0 onbeforeprint = null frames = [object] self = [object]
это чот по моему к моему вопросу не относится, как мне вместо обычного текста вставить на место курсора HTML код !!!