不同插件中多个样式属性的转换不起作用?
Conversion for multiple style attributes in different plugins are not working?
我为 ckeditor 开发了一些插件,它们通过添加带有样式属性的 span 标签来工作。
当我在编辑器中进行更改时,它们工作正常,但是,当我使用 <p><span style="line-height:3;letter-spacing:18px;text-transform:uppercase;font-family:Ubuntu, Arial, sans-serif;font-size:12px;">safasfasfas</span></p>
初始化编辑器时,只有 text-transform
、font-family
和 font-size
工作正常,但休息共 2 个 plugins/style 个属性无效。
有什么想法,我做错了什么吗?
编辑:
我有如下转换
editor.conversion.for( 'downcast' )
.add( downcastAttributeToElement( {
model: {
key: 'letterSpacing',
name: '$text'
},
view: ( modelAttributeValue, viewWriter ) => {
return viewWriter.createAttributeElement( 'span', { style: 'letter-spacing:' + modelAttributeValue + 'px' } );
}
} ) );
editor.conversion.for( 'upcast' )
.add( upcastElementToAttribute( {
view: {
name: 'span'
},
model: {
key: 'letterSpacing',
value: viewElement => {
const letterSpacing = viewElement.getStyle( 'letter-spacing' );
if (letterSpacing === undefined) {
return null;
}
return letterSpacing.substr( 0, letterSpacing.length - 2 );
}
}
} ) );
我可以通过在转换中添加以下代码来解决这个问题。
styles: {
'letter-spacing': /[\S]+/
}
现在转换变成像
editor.conversion.for( 'downcast' )
.add( downcastAttributeToElement( {
model: {
key: 'letterSpacing',
name: '$text'
},
view: ( modelAttributeValue, viewWriter ) => {
return viewWriter.createAttributeElement( 'span', { style: 'letter-spacing:' + modelAttributeValue + 'px' } );
}
} ) );
editor.conversion.for( 'upcast' )
.add( upcastElementToAttribute( {
view: {
name: 'span',
styles: {
'letter-spacing': /[\S]+/
}
},
model: {
key: 'letterSpacing',
value: viewElement => {
const letterSpacing = viewElement.getStyle( 'letter-spacing' );
if (letterSpacing === undefined) {
return null;
}
return letterSpacing.substr( 0, letterSpacing.length - 2 );
}
}
} ) );
我为 ckeditor 开发了一些插件,它们通过添加带有样式属性的 span 标签来工作。
当我在编辑器中进行更改时,它们工作正常,但是,当我使用 <p><span style="line-height:3;letter-spacing:18px;text-transform:uppercase;font-family:Ubuntu, Arial, sans-serif;font-size:12px;">safasfasfas</span></p>
初始化编辑器时,只有 text-transform
、font-family
和 font-size
工作正常,但休息共 2 个 plugins/style 个属性无效。
有什么想法,我做错了什么吗?
编辑: 我有如下转换
editor.conversion.for( 'downcast' )
.add( downcastAttributeToElement( {
model: {
key: 'letterSpacing',
name: '$text'
},
view: ( modelAttributeValue, viewWriter ) => {
return viewWriter.createAttributeElement( 'span', { style: 'letter-spacing:' + modelAttributeValue + 'px' } );
}
} ) );
editor.conversion.for( 'upcast' )
.add( upcastElementToAttribute( {
view: {
name: 'span'
},
model: {
key: 'letterSpacing',
value: viewElement => {
const letterSpacing = viewElement.getStyle( 'letter-spacing' );
if (letterSpacing === undefined) {
return null;
}
return letterSpacing.substr( 0, letterSpacing.length - 2 );
}
}
} ) );
我可以通过在转换中添加以下代码来解决这个问题。
styles: {
'letter-spacing': /[\S]+/
}
现在转换变成像
editor.conversion.for( 'downcast' )
.add( downcastAttributeToElement( {
model: {
key: 'letterSpacing',
name: '$text'
},
view: ( modelAttributeValue, viewWriter ) => {
return viewWriter.createAttributeElement( 'span', { style: 'letter-spacing:' + modelAttributeValue + 'px' } );
}
} ) );
editor.conversion.for( 'upcast' )
.add( upcastElementToAttribute( {
view: {
name: 'span',
styles: {
'letter-spacing': /[\S]+/
}
},
model: {
key: 'letterSpacing',
value: viewElement => {
const letterSpacing = viewElement.getStyle( 'letter-spacing' );
if (letterSpacing === undefined) {
return null;
}
return letterSpacing.substr( 0, letterSpacing.length - 2 );
}
}
} ) );