За последние 24 часа нас посетили 17778 программистов и 1286 роботов. Сейчас ищут 1480 программистов ...

Вставка некоего текста в определенный участок Iframe

Тема в разделе "Вопросы от блондинок", создана пользователем DUCK, 15 ноя 2006.

  1. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    У меня что то типа текстового редактора, в качестве рабочей области используется iframe, необходимо по нажатию кнопки вставить в то место где находится курсор (текстовый, не мышиный) определенный текст.
    Подскажите кто знает.
     
  2. открой исходник этой страницы, да посмотри
     
  3. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    ????????????????
    хе, код своей страницы?????????????
    чо я там не видел????????????
    мне нужно добавить это на свою страницу!!!!!!!!!!!!
     
  4. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    DUCK
    открой исходник ЭТОЙ страницы (php.ru/forum/)
    да и посмотри, ф-ия там не сложная
     
  5. Anonymous

    Anonymous Guest

    Уменьшь количество знаков препинания в своем высказывании.
    Тебе сказали русским языком,
    Читай внимательней.
     
  6. Ишь, разорался.
     
  7. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Код (Text):
    1. function storeCaret(textEl){
    2.     var obj = document.getElementById(textEl);
    3.     if (obj.createTextRange) {
    4.         obj.caretPos = document.selection.createRange().duplicate();
    5.     }
    6. }
    DUCK, дальше надо или так понятно?
     
  8. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    ща попробую разобраться, спасибо, если чо напишу
     
  9. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    caretPos, такого свойства у iframe нет, да и вообще у любого другого объекта помоему
     
  10. Петр

    Петр Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    1.253
    Симпатии:
    0
    Адрес:
    Центр Вселенной
    Еще разок по-внимательнее на код посмотри:
    Код (Text):
    1. function storeCaret(textEl){
    2.     var obj = document.getElementById(textEl);
    3.     if (obj.createTextRange) {
    4.         obj.caretPos = document.selection.createRange().duplicate();
    5.     }
    6. }
     
  11. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    чото я ничо не понимаю тут, объясните на пальцах как нить :)
    ттут вот нашел еще следущее
    <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;
    }
     
  12. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    DUCK
    ну вот и молодец, нашел все что надо
    должно быть все понятно:
    При нажатии на любую клавишу запоминается позиция курсора, если браузер поддерживает конечно.
    При вставке объекта в наше поле ф-ия insertText смотрит:
    если существует наша caretPos, то вставляем текст в нужное место,
    иначе (другой браузер) используем те функции вставки, которые доступны...
    так скать кроссбраузерность
     
  13. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    у меня такой код не работает, может дело все в iframe? тут то для textarea вроде написано. и что мы передаем функции insertText в качестве element?
     
  14. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    DUCK
    тебе что-то мешает в ifram сделать textarea width=100% height=100%?
     
  15. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    вроде чото получается но теперь нужно чтобы не просто текст добавлялся а HTML код.
    caretPos.text=text - уже не канает
    а такое: caretPos.htmlText=text - не работает
    что делать?
     
  16. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Копируй эту функцию себе в скрипт и вызывай ее с чем угодно:
    about(caretPos);
    Код (Text):
    1. function about(obj){
    2.     var wnd = window.open("",'help');
    3.     wnd.document.write('<pre>');
    4.     var str = '';
    5.     var tab = ' ';
    6.     for (i in obj){
    7.         cont    = obj[i]+'';
    8.         if (cont.substring(0,8) == 'function'){
    9.             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>';
    10.         }
    11.         str = i + '';
    12.         tab = ' ';
    13.         wnd.document.write(i+tab+'= '+cont+'\n');
    14.     }
    15.     wnd.document.write('</pre>');
    16. }
     
  17. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    Не совсем понял, как применять приведенный вами код?
     
  18. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    у меня там все работает, этот код мне не нужен, скажите лучше как вместо обычного текста вставить html код
     
  19. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    нужно скопировать себе в скрипт эту функцию, а затем
    имея любой объект JS выполнить эту функцию.
    например:
    about(document);
     
  20. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    скопировад, работает, но не очень понятно: открывается окно а в нем текстом черным по белому написано
    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]
     
  21. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    это чот по моему к моему вопросу не относится, как мне вместо обычного текста вставить на место курсора HTML код !!!
     
  22. DUCK

    DUCK Активный пользователь

    С нами с:
    9 окт 2006
    Сообщения:
    55
    Симпатии:
    0
    Все, сделал, всем спасибо. Надо использовать метод pasteHTML()
     
  23. Anonymous

    Anonymous Guest

    DUCK, рады =)