Вот другой способ (на основе нескольких прикрепленных ссылок).
Вы можете получить текущую позицию элемента с помощью editor.getSelection().getStartElement()
- (редактор - CKEDITOR.instances.% Редакторэкземпляр%.
Теперь вы можете обернуть фактический элемент для jquery (или использовать адаптер jquery ..):
$(editor.getSelection().getStartElement().$)
Это даст вам доступ к использованию следующего плагина.которая разрешает все стили данного элемента (как встроенные, так и унаследованные):
/*
* getStyleObject Plugin for jQuery JavaScript Library
* From: http://upshots.org/?p=112
*
* Copyright: Unknown, see source link
* Plugin version by Dakota Schneider (http://hackthetruth.org)
*/
(function($){
$.fn.getStyleObject = function(){
var dom = this.get(0);
var style;
var returns = {};
if(window.getComputedStyle){
var camelize = function(a,b){
return b.toUpperCase();
}
style = window.getComputedStyle(dom, null);
for(var i=0;i<style.length;i++){
var prop = style[i];
var camel = prop.replace(/\-([a-z])/g, camelize);
var val = style.getPropertyValue(prop);
returns[camel] = val;
}
return returns;
}
if(dom.currentStyle){
style = dom.currentStyle;
for(var prop in style){
returns[prop] = style[prop];
}
return returns;
}
return this.css();
}
})(jQuery);
(взято из: jQuery CSS-плагин, который возвращает вычисленный стиль элемента для псевдоклонирования этого элемента? )
Все, что осталось сделать, это:
$(editor.getSelection().getStartElement().$).getStyleObject()
Теперь вы можете проверить любой стиль, присвоенный элементу.
Еще один небольшой совет будет- каковы стили для текущей позиции курсора, каждый раз, когда позиция или стили меняются:
В этом случае вы можете использовать обратный вызов attachStyleStateChange (который сам по себе довольно атрофирован, так как is может возвращать только логическое значениеиндикация погодыили не определенный стиль применяется к текущей позиции).Хорошая вещь об этом - обратный вызов принимается при каждом изменении состояния стиля, то есть всякий раз, когда позиция курсора перемещается в позицию с другими атрибутами стиля. Любой другой атрибут, а не только атрибут, который слушатель хотел проверить.(Взято из API http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#attachStyleStateChange)
Объединение всего вместе, чтобы выяснить, какие текущие примененные стили в текущей позиции курсора Каждый раз, когда что-то меняется :
editor.on('instanceReady', function () {
//editor.setReadOnly(true);
var styleBold = new CKEDITOR.style(CKEDITOR.config.coreStyles_bold);
editor.attachStyleStateChange(styleBold, function (state) {
var currentCursorStyles = $(editor.getSelection().getStartElement().$).getStyleObject();
// For instance, the font-family is:
var fontFamily = currentCursorStyles.fontFamily;
});
});