JavaScript frame

Тема в разделе "Другие языки", создана пользователем almary, 3 июл 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. almary

    almary Постоялец

    Регистр.:
    2 апр 2006
    Сообщения:
    93
    Симпатии:
    32
    Всем привет!

    Возникла проблемка, есть плагин редактора для jquery, по структуре программы, мне потребовалось сделать скрытый див с редактором и перетаскивать его по структуре в нужное место (заюзан в блоге для ответов на каменты). Этот слой я сначала делаю $('#div_editor').show() (на этом месте все ок) и перетаскиваю его в нужное место $('div_editor').insertAfter($('#metka_dlya_vstavki'); и при этом действии теряю контроль над фреймом редактора и в этом фрейме я уже не могу писать текст, точнее мне запрещен доступ к нему.

    Если я при перетаскивании делаю такую фишку:
    document.getElementById('div_editor').contentWindow.document.designMode = 'ON';
    document.getElementById('div_editor').contentWindow.document.open();
    document.getElementById('div_editor').contentWindow.document.write('');
    document.getElementById('div_editor').contentWindow.document.close();

    я получаю доступ к фрейму, но при жмякании по кнопкам тулбара вылетает в FF месага [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost/plugins/editor/editor.js :: anonymous :: line 46" data: no]

    т.е. по всей видимости мне нужно как-то активировать фрейм в классе редактора, но как это сделать фиг знает, я в JS не силен.

    Редактор заюзан как плагин для Jquery, собственно вот он сам http://plugins.jquery.com/project/lwRTE

    Вопрос в том как сохранить права над ифреймом и чтобы при "таскании" редактора в нужные места такого не происходило?

    За ценный совет с меня на пиво :)
     
  2. Zogr

    Zogr Постоялец

    Регистр.:
    6 июн 2008
    Сообщения:
    96
    Симпатии:
    7
    Аналогичную задачу решал в своё время для TinyMCE. Тоже аналогичные же симптомы были, стал гуглить доки, оказалось, что есть какая-то то ли бага, то ли фича с этими фреймами, что если хочешь перенести их в новое место - нет иного варианта, кроме как удалить и создать заново. Собсно что я и сделал - сначала удаляем на старом месте, потом создаём на новом. Сразу всё отлично стало.
    Единственная тонкость - скрипт должен быть правильно написан (не должно быть утечки ссылок), иначе при частых переносах память будет жраццо не по деццки.
     
    almary нравится это.
  3. almary

    almary Постоялец

    Регистр.:
    2 апр 2006
    Сообщения:
    93
    Симпатии:
    32
    т.е. заново придется редактор генерить?
     
  4. Zogr

    Zogr Постоялец

    Регистр.:
    6 июн 2008
    Сообщения:
    96
    Симпатии:
    7
    Ммм... Я, честно говоря, не знаю, как создаётся/генерится тот редактор, которым вы пользуетесь (что там лично вам приходится генерить, а что генерит сам редактор), но с тиней всё просто. Если я не ошибаюсь, одним вызовом метода объекта редактора его уничтожил, другим вызовом метода фабрики создал новый. Всё. Ну и удостоверился по коду, что нигде не осталось висящих ссылок на прошлый объект редактора (но это уже стандартный вопрос дисциплины кодирования).
     
  5. almary

    almary Постоялец

    Регистр.:
    2 апр 2006
    Сообщения:
    93
    Симпатии:
    32
    если честно я понятия не имею как редактор создается и что происходит в нем, в JS я всего вторую неделю копаюсь и сразу с такой траблой столкнулся :( сама загрузка происходит вот так:

    $(document).ready(function(){
    $('.rte').rte({
    css: 'default.css',
    width: '99%',
    controls_rte: rte_toolbar,
    controls_html: html_toolbar
    });
    });
     
Статус темы:
Закрыта.