-
用于元素列表中的星号意思是:“该规则对所有元素接受后面的属性,但不是这些元素本身;必须有另一条规则显式地接受这些元素”。
-
属性列表中的星号意思是:“接受所有属性”。
-
用于属性列表中条目名前的感叹号(!)(如:[!href])意思是:“此属性是必需的。
如果一个元素不具有此属性,此规则不应应用于该元素(故此元素将不会由它得到验证)”。
例子:
// 一条规则接受<p>和<h1>元素,但没有任何属性。
p h1
//一条规则接受具有可选的"left"和 "right"类的<p>和<h1>元素 //注意:两个元素都可能含有这些类,而不仅仅是<h1>
p h1(left,right)
//一条规则接受具有其所有属性的<p>和<h1>元素
p h1[*]
//一条规则接受<a>,只有当它含有"href"属性时。
a[!href]
//一条规则接受<img>,它具有必需的"src"属性和一个可选的"alt"属性,加上可选的"width"和"height"样式
img[alt,!src]{width,height}
//与上面相同,因为属性的顺序和其清单是不相关的,并且忽略空格
img { height, width } [ !src, alt ]
允许内容规则集可以含有由分号(;)分隔的多条规则。如:
// 这些规则允许:
// 具有可选的"text-align"样式的<p和><h1>元素 //具有必需的"href"属性的<a>
// <strong> 和 <em> 元素,
//具有可选的"tip"类的<p>(故<p>元素可以同时具有"text-align"样式和"tip"类)
p h1{text-align}; a[!href]; strong em; p(tip)
//这些规则允许:
// 具有可选的"id"属性的<p>和<h1>元素
//具有必需的"href"属性和可选的"id"属性的<a>
p h1; a[!href]; *[id]
调试
为了验证允许内容规则是否被正确解析了,可以检查CKEDITOR.editor.filter对象的CKEDITOR.filter.allowedContent属性。
var editor = CKEDITOR.replace( 'textarea_id', {
allowedContent: 'a[!href]; ul; li{text-align}(someclass)' }
);
editor.on( 'instanceReady', function() {
console.log( editor.filter.allowedContent )
}
);
// 这将对下列数组做日志:
// { elements: 'p br', ... } (默认编辑器规则)
// { elements: 'a', attributes: '!href' }
// { elements: 'ul' }
// { elements: 'li', styles: 'text-align', classes: 'someclass' }
对象格式(Object Format)
为方便使用,允许内容规则可以定义成标准的对象字面量,故下面的:
allowedContent: 'p h1{text-align}; a[!href]; strong em; p(tip)'
//与下面的相对应:
allowedContent: {
'p h1': {
styles: 'text-align'
},
a: {
attributes: '!href'
},
'strong em': true,
p: {
classes: 'tip'
}
}
内容版权声明:除非注明,否则皆为本站原创文章。
