Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.01.2014, 07:35
Интересующийся
Отправить личное сообщение для nikolya223 Посмотреть профиль Найти все сообщения от nikolya223
 
Регистрация: 09.11.2013
Сообщений: 15

tinyMCE jQuery перехват изменений
Может кто подсказать?

К сути - есть tinyMCE и jquery плагин версии 2.1

Нужно реализовать перехват изменения содержания айфрейма с визивигом

Проискал интернет, единственное что обнаружил

tinyMCE.init({
onchange_callback: "myfunction"
})

Но с плагином jQuery не заводится.
ни таким образом, ни при подключении к конструкции приведённой ниже.
вот пример: (На хост не выкладываю - смысла нет, на jsFiddle аналогично, может так в курсе кто)
[spoiler]
$('#text_area_cell_create').tinymce({
                    // Location of TinyMCE script
                    content_css : "/core/templates/js/tiny_mce/custom_content.css",
                    script_url : '/core/templates/js/tiny_mce/tiny_mce.js',

                    // General options
                    theme : "advanced",
                    language : "ru",
                    relative_urls : false,
                    plugins : "safari,pagebreak,style, layer,table,save,advhr,advimage, advlink,emotions,iespell,inlinepopups,insertdatetime, preview,media,searchreplace,print,contextmenu, paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,images",
                    file_browser_callback : "upload",

                    // Theme options
                    theme_advanced_buttons1 : "save,|,mylistbox,mysplitbutton,bold,italic,underline,separator,strikethrough,justifyleft,justifycenter, justifyright,justifyfull,bullist,numlist,formatselect,|,code,|, undo,redo,link,unlink,image,images,|,fullscreen",
                    theme_advanced_buttons2 : "abbr,acronym,del,ins,attribs,styleprops",
                    theme_advanced_buttons3 : "",
                    fullscreen_settings : {                        
                      theme_advanced_buttons1 : "save,|,undo,redo,|,cut,copy,paste,pastetext,pasteword,|,search,replace,|, cleanup,removeformat,visualaid,visualchars,nonbreaking,|,bold, italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|, outdent,indent,blockquote,|,sub,sup,|,bullist,numlist,formatselect,code,|,fullscreen",
                      theme_advanced_buttons2 : "tablecontrols,|,insertlayer,moveforward,movebackward,absolute,|,link, unlink,anchor,|,insertdate,inserttime,|,charmap,emotions,iespell, media,image,images,advhr,hr,|,cite,abbr,acronym,del,ins, attribs,styleprops,|,typograf",
                      theme_advanced_path_location : "bottom"
                    },
                    theme_advanced_toolbar_location : "top",
                    theme_advanced_toolbar_align : "left",
                    theme_advanced_statusbar_location : "bottom",
                    theme_advanced_resizing : false,
                    
                    setup : function(ed){        
                      if (ed.editorId != 'mce_fullscreen') {
                        tinyMCE.myActiveEditor = {};
                        tinyMCE.myActiveEditor = ed;
                      }
                      ed.onActivate.add( function(ed){
                        if( ed.editorId != 'mce_fullscreen' ){
                          tinyMCE.myActiveEditor = {};
                          tinyMCE.myActiveEditor = ed;
                        }
                      });
                      ed.onInit.add(function(ed) {
                           el = ed.getBody();
                           //элементы данной функции привёл ниже
                           tinyMCE_HTML_into_elem(el)
                      });
                      ed.onLoadContent.add( function(ed){
                        ed.addCommand('mceSave', function(){
                            $(".elem_new").html($("#text_area_cell_create").val())
                          return false;
                        });
                      }); 
                       
                    }
                  });

[/spoiler]

В данный момент вышел из положения велосипедом
el.addEventListener('DOMCharacterDataModified',
      function() {
        afterListinerResize($(".elem_new"))     
      });
  и
       el.addEventListener('DOMSubtreeModified',
      function() {
        afterListinerResize($(".elem_new"))
      });
 и
      el.addEventListener('paste',
      function() {
        afterListinerResize($(".elem_new"))
      });

С отловом повторений, но всё же возможно есть простой способ перехвата?
Буду очень признателен
upd: кросбраузерность не важна. Только хром, Новая опера и ФФ.
upd2: или возможно както отследить изменение содержания кода в текстарее?
upd3: Самый крайний вариант - буду обфускацию tinymce ломать
Ответить с цитированием
  #2 (permalink)  
Старый 06.01.2014, 08:32
Интересующийся
Отправить личное сообщение для nikolya223 Посмотреть профиль Найти все сообщения от nikolya223
 
Регистрация: 09.11.2013
Сообщений: 15

Проблему решил. Нашёл читабельный исходник и обсмотрел возможные события.

В setup вставил реакцию на события.

ed.onEvent.add(function(ed) {
          afterListinerResize($(".elem_new"));
});
//и

ed.onNodeChange.add(function(ed) {
    afterListinerResize($(".elem_new"));
});  // реакция на вставку изображений

Последний раз редактировалось nikolya223, 06.01.2014 в 08:39.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
хочу инвайт на хабр macdack Оффтопик 45 28.07.2013 23:18
Работа для знатока jQuery virtualbrest Работа 0 24.07.2013 16:05
Вопрос поддержки старых методов jQuery antonM jQuery 1 04.10.2012 00:08
tinyMCE, jQuery, пустая textarea maniac Библиотеки/Тулкиты/Фреймворки 9 02.05.2012 15:24
2 разных модуля на jQuery - как подключить? finder jQuery 4 23.03.2012 22:29