Вставить текст в позицию курсора в текстовый редактор TinyMCE

У меня есть небольшая функция, которая позволяет пользователю нажимать кнопку под текстовым textrange вставлять соответствующий текст (это работает в сочетании с плагином jQuery textrange ).

Однако, поскольку я использую редактор TinyMCE в своем плагине, это работает только в режиме «Текст», а не «Визуальный».

Я посмотрел на источник, но не могу понять, как заставить его работать для обоих. Кто-нибудь знает, как я могу вставлять текст в редактор в режиме «Визуальный»? Благодарю.

 $(document).ready(function(){ var button_text = {} // The text to insert for each button click button_text['insert_event_name'] = 'event_name'; button_text['insert_event_date'] = 'event_date'; button_text['insert_event_start_time'] = 'event_start'; button_text['insert_event_finish_time'] = 'event_finish'; button_text['insert_event_location'] = 'event_location'; button_text['insert_event_address_inline'] = 'event_address_inline'; button_text['insert_event_address_blick'] = 'event_address_block'; $('.inserter', '#event-desc-container').on('click', function(){ var button = $(this).attr('name'), text = '['+button_text[button]+']', textarea = $('textarea#event_desc', '#event-desc-container'); /** Get the location (start position) of where the cursor is in the textarea */ var start = textarea.textrange('get', 'start'); /** Add the relevent button text to the start position */ textarea.textrange('replace', text).trigger('updateInfo').focus(); /** The newly added text will be selected, so work out the end position of that selection */ var end = textarea.textrange('get', 'end'); /** Move the cart to the end position, so that no text is highlighted */ textarea.textrange('set', end, 0).trigger('updateInfo').focus(); }); }); 

Чтобы проверить это, я добавил кнопку в один из других мета-полей на экране редактирования сообщений / нового с id addtxtbtn . При click я захватил textarea внутри #wp-content-editor-container , который является оболочкой по умолчанию для экземпляра WP Editor по умолчанию. Возможно, вам придется изменить это, если у вас есть другой MarkUp. Остальное взято из демонстрации на GitHub – если это плагин, о котором вы говорили.

 ( function($) { $( '#addtxtbtn' ).on( 'click', function( e ) { e.preventDefault(); var textarea = $( '#wp-content-editor-container' ).find( 'textarea' ); textarea.bind( 'updateInfo keyup mousedown mousemove mouseup', function() { var range = $( this ).textrange(); console.log( range ); } ); } ); } )( jQuery ); 

Текст

Короче говоря: Чтобы добавить текст в «Текст» – textarea , сделайте следующее:

 $( '#wp-content-editor-container' ).find( 'textarea' ).val( 'Some default Text' ); 

визуальный

Чтобы добавить текст в редактор «TinyMCE» / «Visual», выполните следующие действия:

 tinyMCE.activeEditor.execCommand( 'mceInsertContent', false, 'Some default Text' ); 

Если вам нужно получить контент от TinyMCE, вы можете использовать следующее:

 // Raw tinyMCE.activeEditor.getContent( { format : 'raw' } ); // HTML contents: tinyMCE.activeEditor.getContent(); 

Чтобы получить контент из определенного экземпляра TinyMCE (если возможно более одного), используйте:

 tinyMCE.get( 'some-id' ).getContent();