Если коротко, то в _this сохраняется объект BXEditor, а затем с помощью методов GetContent() получаем содержимое, а с помощью SetContent и ReInitFrame обновляем содержимое и сам визуальный редактор.
P.S. Event для загрузки скрипта выглядит примерно так:
Напишите пожалуйста как именно вы из своего обработчика дотянулись до BXEditor, а то приведенный код не будет работать, да и не все разработчики гуру js.
Kryachek Mikhail, в методе ModuleClass::ModuleFunction() подключаете с помощью AddHeadScript вышеприведенный JS как есть. Всё, когда он выполнится, в _this у вас уже будет объект BXEditor.
Ок, судя по коду анонимная функция выполняется в контексте BXEditor используя call. только судя по коду входящим параметром собственно является сам редактор BX.onCustomEvent(this.oEditor, "OnEditorInitedBefore", [this.oEditor]);
var _this=this; будет равнозначно var _this=toolbar;
Владислав Голубев, если я вас правильно понял... то парсер вы можете писать внутри скрипта, вызываемого AJAX-ом. Если контент менять не нужно, то скрипт должен будет вернуть, что и получил.
Олег Постоев, не совсем. Парсер нужен для того, чтобы заменять свою вставку html-кода например иконкой. Т.е. кнопка например производит вставку в текст некоего DIV'а со своими атрибутами а редактор вместо него показывает иконку. Обратный парсер соответственно преобразует "иконку" в DIV с нужными атрибутами.
Владислав Голубев, ну тогда php-скрипт вам не нужен. Мне кажется, такой парсер можно писать (или вызывать) здесь:
handler:function(e){ ...ваш парсер...
Хотя, возможно, придется не кнопку использовать, а задействовать парсер в момент инициализации, обновления данных и возвращать HTML-код перед сохранением/применением изменений.
Покопался по коду редактора. Вроде как можно парсер следующим образом добавить:
BX.addCustomEvent("OnParse", function(bParseBxNodes) {
// bParseBxNodes - означает направление парса:
// true - из визуального представления редактора в обычный html-код
// false - из обычного html-кода в визуальное представление редактора
this.content = //можем менять контент - найти регуляркой нужный фрагмент и заменить его
});
Вот так еще можно добавить парсер. В пример мы парсим html и заменяем блок с классом "bxhtmled-accordion" на суррогата. Суррогат это визуальное представление кода в редакторе. Но вот как добавить свои обработчики на события вызова контекстного меню, клика и двойного клика.
Если вдруг вы захотите дотянуться до редактора из вне, то он хранится в глобальном windows
var editor = window['BXHtmlEditor'].editors.idLHE_BIZPROC_COMMENT_FORM; //идентификартор формы совпадает с 'idLHE'+FORM_ID передаваемый в копонент main.post.form
editor.SetContent('', true);
editor.ReInitIframe();
Я использую компонент "bitrix:main.post.form" и свою кастомную кнопку. блин, 8 лет прошло, а ничего не поменялось )
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».