Как я могу получить цвет выделения в TinyMCE? - PullRequest
6 голосов
/ 27 января 2012

Я создаю приложение с встроенным в него редактором TinyMCE.Я хочу, чтобы элементы управления моего приложения обновлялись при изменении выделения в редакторе tinyMCE, чтобы в меню шрифта, размера и цвета отображался шрифт, размер и цвет выделения.Шрифт и цвет работают нормально, но я не могу понять, как получить цвет.Вот код, который я использую:

myTinyMCESettings.handle_node_change_callback = function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){
    var editor = tinyMCE.get(editor_id);
    selectionChanged(editor,!any_selection);
};

tinyMCE.init(myTinyMCESettings);

function selectionChanged(ed,selection){    
    var fontName = ed.queryCommandValue('FontName');
    var size = parseInt(ed.queryCommandValue('FontSize'));
    var color = ed.queryCommandValue('ForeColor');
}

Но color === false.Как я могу получить цвет переднего плана выделенного текста или текста в точке вставки в tinyMCE?

РЕДАКТИРОВАТЬ: Отслеживание этого дальше, в строке 12377 из tiny_mce_prototype_src.js Я вижу:

// Registred commands
o = t.editorCommands.queryCommandValue(c);

Когда я прохожу через это в моем отладчике, t.editorCommands.queryCommandValue(c); возвращает false.

Ответы [ 4 ]

6 голосов
/ 27 января 2012

Я бы попробовал сделать это по-другому (не проверял) - взяв вычисляемый стиль:

myTinyMCESettings.handle_node_change_callback = function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){
    var editor = tinyMCE.get(editor_id);
    var color =  tinyMCE.DOM.getStyle(node, 'color', true); // computes current color
    selectionChanged(editor,!any_selection);
};
3 голосов
/ 20 октября 2012

Я не знаю, решили ли вы это, но я сделал следующее:

var node = ed.selection.getNode();
node_array = tinyMCE.DOM.getParents(node);
for(i = 0; i < node_array.length; i++){
    var the_node = node_array[i];
    var color = the_node.style.color;
    if(color != "" && color != "undefined" && color != null){
        return color;   
    }
}
return "";

Где ed - это переменная вашего редактора tinyMCE.

1 голос
/ 27 января 2012

Это будет работать, если ваш выбор полностью внутри цветного текста

tinymce.get('my_editor_id').selection.getNode().style.color;
0 голосов
/ 02 мая 2013

Это будет делать

tinymce.get('my_editor_id').getContentAreaContainer().style.color= "red"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...