提交 81b974b2 编写于 作者: Y yancen

Merge branch 'dev-1.2.5' of https://github.com/campaign/ueditor into dev-1.2.5

module( 'core.filternode' );
test( '', function() {
test( '过滤掉整个标签', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf<b>sdf</b></p><i>sdf</i></div>');
UE.filterNode(node,{
'p':{},
'b':'-'
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p>sdf</p>sdf</div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p>sdf</p>sdf</div>','保留p,过滤b');
node.innerHTML('<p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td></td></tr></tbody></table></p><div>sdfasdf</div>');
node.innerHTML('<p><p>sdfs</p><br/><br/><br/><br/></p>');
UE.filterNode(node,{
'p':{$:{
style:['color']
}},
'td':{}
'p':{},
'br':'-'
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="color:#ccc"><td></td></p>sdfasdf</div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p><p>sdfs</p></p></div>','保留p,过滤br');
});
node.innerHTML('<p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td>sdfs</td><td>sdfs</td></tr></tbody></table></p><div>sdfasdf</div>');
test( '过滤标签全部属性', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf<b>sdf</b></p><i>sdf</i></div>');
node.innerHTML('<div id="aa"><p style="color:#ccc"><p>sdfssdfs</p></p>sdfasdf</div>');
UE.filterNode(node,{
'p':{$:{
style:['color']
}},
'tr':function(node){
node.tagName = 'p';
node.setAttr();
},
'td':function(node){
node.parentNode.removeChild(node,true)
}
'p':{$:{}}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="color:#ccc"><p>sdfssdfs</p></p>sdfasdf</div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p><p>sdfssdfs</p></p>sdfasdf</div>','过滤p全部属性');
node.innerHTML('<h6>asd<b>lk</b><i>fj</i></h6>');
UE.filterNode(node,{
'p':{$:{}}
'h6':function(node){
node.tagName = 'p';
node.setAttr();
},
'-':'b i',
'p':{}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p><p>sdfssdfs</p></p>sdfasdf</div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p>asd</p></div>','同时过滤多个标签属性');
});
node.innerHTML('<p><p>sdfs</p><br/><br/><br/><br/></p>');
test( '过滤标签部分属性', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf<b>sdf</b></p><i>sdf</i></div>');
node.innerHTML('<p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td></td></tr></tbody></table></p><div>sdfasdf</div>');
UE.filterNode(node,{
'p':{},
'br':'-'
'p':{$:{
style:['color']
}},
'td':{}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p><p>sdfs</p></p></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="color:#ccc"><td></td></p>sdfasdf</div>','保留p的color属性');
node.innerHTML('<p style="text-indent:28px;line-height:200%;margin-top:62px;"><strong>sdfs</strong><span style="font-family:宋体">sdfs</span></p>');
UE.filterNode(node,{
......@@ -53,7 +58,7 @@ test( '', function() {
'span':{$:{}},
'strong':'-'
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="line-height:200%"><span>sdfs</span></p></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="line-height:200%"><span>sdfs</span></p></div>','过滤span全部属性,保留p部分属性,过滤strong标签');
node.innerHTML('<p><a></a><u class="ad" id="underline">sdfs<sub class="ab">sdfs</sub><i>sdfs</i></u><i>sdfs</i></p>');
UE.filterNode(node,{
......@@ -64,7 +69,26 @@ test( '', function() {
'sub':{$:{}},
'i':'-'
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p><u class="ad">sdfs<sub>sdfs</sub></u></p></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p><u class="ad">sdfs<sub>sdfs</sub></u></p></div>','过滤sub全部属性,保留u部分属性,过滤i标签');
});
test( '标签替换过滤', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf<b>sdf</b></p><i>sdf</i></div>');
node.innerHTML('<p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td>sdfs</td><td>sdfs</td></tr></tbody></table></p><div>sdfasdf</div>');
UE.filterNode(node,{
'p':{$:{
style:['color']
}},
'tr':function(node){
node.tagName = 'p';
node.setAttr();
},
'td':function(node){
node.parentNode.removeChild(node,true)
}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="color:#ccc"><p>sdfssdfs</p></p>sdfasdf</div>','tr替换为p,过滤掉td');
node.innerHTML('<img src="http://img.baidu.com/hi/jx2/j_0020.gif" height="10px"/><table><caption>aldkfj</caption><tbody><tr style="background-color: #ccc;"><th>adf</th></tr><tr><td>lkj</td></tbody></table>');
UE.filterNode(node,{
......@@ -83,41 +107,41 @@ test( '', function() {
node.parentNode.removeChild(node,node.innerText())
}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><img src="http://img.baidu.com/hi/jx2/j_0020.gif" /><table>aldkfj<tbody><tr>adf &nbsp; &nbsp;</tr><tr><td>lkj</td></tr></tbody></table></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><img src="http://img.baidu.com/hi/jx2/j_0020.gif" /><table>aldkfj<tbody><tr>adf &nbsp; &nbsp;</tr><tr><td>lkj</td></tr></tbody></table></div>','th按文本内容替换,保留img部分属性');
});
test( '保留标签全部属性', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf<b>sdf</b></p><i>sdf</i></div>');
node.innerHTML('<ol><li><em>sdf</em></li><ul class=" list-paddingleft-2"><li>a</li><li>b</li><li>c</ul><li>jkl</ol>');
UE.filterNode(node,{
'ol':{},
'ul':{$:{}},
'li':{}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><ol><li>sdf</li><ul><li>a</li><li>b</li><li>c</li></ul><li>jkl</li></ol></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><ol><li>sdf</li><ul><li>a</li><li>b</li><li>c</li></ul><li>jkl</li></ol></div>','保留ol、li全部属性,过滤ul全部属性');
});
//过滤规则为空
test( '过滤规则为空', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf<b>sdf</b></p><i>sdf</i></div>');
node.innerHTML('<p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td><h1>asd</h1></td></tr></tbody></table></p><div>sdfasdf</div>');
UE.filterNode(node,{});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td><h1>asd</h1></td></tr></tbody></table></p><div>sdfasdf</div></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p style="color:#ccc;border:1px solid #ccc;"><table><tbody><tr><td><h1>asd</h1></td></tr></tbody></table></p><div>sdfasdf</div></div>','过滤规则为空');
});
test( '特殊规则过滤', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><p>sdf</p><i>sdf</i></div>');
node.innerHTML('<script></script>');
UE.filterNode(node,{
'b':'-'
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"></div>','过滤规则中包含html中不存在的标签');
node.innerHTML('<p><!--asdfjasldkfjasldkfj--></p>');
UE.filterNode(node,{
'p':{}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p></p></div>');
node.innerHTML('<h6>asd<b>lk</b><i>fj</i></h6>');
UE.filterNode(node,{
'h6':function(node){
node.tagName = 'p';
node.setAttr();
},
'-':'b i',
'p':{}
});
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p>asd</p></div>');
equals(node.toHtml().replace(/[ ]+>/g,'>'),'<div id="aa"><p></p></div>','innerHTML中包含注释');
});
\ No newline at end of file
module( 'core.node' );
test( '', function() {
test( 'createElement', function() {
var uNode = UE.uNode;
//createElement
var node = uNode.createElement('div');
equals(node.tagName,'div');
equals(node.type,'element');
equals(node.tagName,'div','空div ——tagname');
equals(node.type,'element','空div ——节点类型');
node = uNode.createElement('<div id="aa">sdfadf</div>');
equals(node.tagName,'div');
equals(node.children[0].data,'sdfadf');
equals(node.tagName,'div','非空div——tagname');
equals(node.children[0].data,'sdfadf','非空div——数据内容');
});
//getNodeById
node = uNode.createElement('<div id="aa"><div id="bb"></div>sdfadf</div>');
test( 'getNodeById', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><div id="bb"></div>sdfadf</div>');
node = node.getNodeById('bb');
equals(node.getAttr('id'),'bb');
equals(node.getAttr('id'),'bb','获取标签id');
node = uNode.createElement('<div id="aa"><div id="bb"><div id="cc"></div> </div>sdfadf</div>');
node = node.getNodeById('cc');
equals(node.getAttr('id'),'cc');
equals(node.getAttr('id'),'cc','获取标签id');
});
//getNodesByTagName
node = uNode.createElement('<div id="aa"><div id="bb"><div id="cc"></div> </div>sdfadf</div>');
test( 'getNodesByTagName', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa"><div id="bb"><div id="cc"></div> </div>sdfadf</div>');
var nodelist = node.getNodesByTagName('div');
equals(nodelist.length,2);
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<div id="bb"><div id="cc"></div> </div>sdfadf');
equals(nodelist.length,2,'div节点列表长度');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<div id="bb"><div id="cc"></div> </div>sdfadf','innerHTML内容');
});
//innerHTML
test( 'innerHTML', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa">sdfadf</div>');
node.innerHTML('<div><div><div></div></div></div>');
nodelist =node.getNodesByTagName('div');
equals(nodelist.length,3);
var nodelist =node.getNodesByTagName('div');
equals(nodelist.length,3,'div节点列表长度');
for(var i= 0,ci;ci=nodelist[i++];){
ci.tagName = 'p';
}
equals(node.innerHTML(),'<p><p><p></p></p></p>');
equals(node.innerHTML(),'<p><p><p></p></p></p>','innerHTML内容');
});
//innerText
test( 'innerText', function() {
var tmp = new UE.uNode.createElement('area');
tmp.innerHTML('');
equals(tmp.innerText(),tmp);
tmp.innerHTML('<p></p>');
equals(tmp.innerText(),tmp,'标签类型特殊');
var tmp = new UE.uNode.createText('');
tmp.innerHTML('');
equals(tmp.innerText(),tmp);
tmp.innerHTML('<p></p>');
equals(tmp.innerText(),tmp,'对象类型不为element');
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa">sdfadf</div>');
node.innerHTML('<p>dfsdfsdf<b>eee</b>sdf</p>');
equals(node.innerText(),'dfsdfsdfeeesdf');
equals(node.innerText(),'dfsdfsdfeeesdf','获取标签中纯文本');
});
//getData
test( 'getData', function() {
var tmp = new UE.uNode.createElement('div');
equals(tmp.getData(),'');
equals(tmp.getData(),'','element元素');
var tmp = new UE.uNode.createText('askdj');
equals(tmp.getData(),"askdj");
equals(tmp.getData(),"askdj",'其他类型');
});
//appendChild && insertBefore
test( 'appendChild && insertBefore', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa">sdfadf</div>');
node.innerHTML('<p><td></td></p>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p>','补全html标签');
var tmp = uNode.createElement('div');
node.appendChild(tmp);
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>','appendChild');
node.insertBefore(tmp,node.firstChild());
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<div></div><p><table><tbody><tr><td></td></tr></tbody></table></p>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<div></div><p><table><tbody><tr><td></td></tr></tbody></table></p>','insertBefore');
node.appendChild(tmp);
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>','appendChild');
});
//replaceChild && setAttr
tmp = uNode.createElement('p');
test( 'replaceChild && setAttr', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa">sdfadf</div>');
node.innerHTML('<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>');
var tmp = uNode.createElement('p');
tmp.setAttr({'class':'test','id':'aa'});
node.insertBefore(tmp,node.lastChild());
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><p class="test" id="aa"></p><div></div>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><p class="test" id="aa"></p><div></div>','setAttr不为空');
node.replaceChild(uNode.createElement('div'),tmp);
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div><div></div>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div><div></div>','replaceChild');
//insertAfter
node.innerHTML('<p><td></td></p>');
var tmp = uNode.createElement('div');
node.appendChild(tmp);
node.insertAfter(tmp,node.firstChild());
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>');
node.appendChild(tmp);
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>');
//setAttr
node.removeChild(node.lastChild(),true);
tmp = uNode.createElement('p');
tmp.setAttr();
node.insertAfter(tmp,node.lastChild());
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div><p></p>');
//replaceChild
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div><p></p>','setAttr为空');
node.innerHTML('<p><td></td></p>');
var tmp = uNode.createElement('div');
node.appendChild(tmp);
node.replaceChild(node.firstChild(),tmp);
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p>');
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p>','replaceChild');
});
//getStyle
test( 'insertAfter', function() {
var uNode = UE.uNode;
var node = uNode.createElement('<div id="aa">sdfadf</div>');
node.innerHTML('<p><td></td></p>');
var tmp = uNode.createElement('div');
node.appendChild(tmp);
node.insertAfter(tmp,node.firstChild());
equals(node.innerHTML().replace(/[ ]+>/g,'>'),'<p><table><tbody><tr><td></td></tr></tbody></table></p><div></div>','在第一个子节点后插入');
});
test( 'getStyle', function() {
var uNode = UE.uNode;
var node = uNode.createElement('div');
node.innerHTML('<div style=""><div>');
node = node.firstChild();
equals(node.getStyle(''),'');
equals(node.getStyle(''),'','空cssStyle');
node.innerHTML('<div style="border:1px solid #ccc"><div>');
node = node.firstChild();
equals(node.getStyle('border'),'1px solid #ccc');
equals(node.getStyle('border'),'1px solid #ccc','有border,取border样式');
node.innerHTML('<div style="border:1px solid #ccc"><div>');
node = node.firstChild();
equals(node.getStyle('color'),'');
equals(node.getStyle('color'),'','无color样式,取color样式');
node.innerHTML('<div style="border:1px solid #ccc;color:#ccc"><div>');
node = node.firstChild();
equals(node.getStyle('border'),'1px solid #ccc');
equals(node.getStyle('border'),'1px solid #ccc','有2个样式,取其一');
});
//setStyle
test( 'setStyle', function() {
var uNode = UE.uNode;
var node = uNode.createElement('div');
node.innerHTML('<div style="border:1px solid #ccc;color:#ccc"><div>');
node = node.firstChild();
node.setStyle('border','2px solid #ccc');
equals(node.getAttr('style'),'border:2px solid #ccc;color:#ccc');
equals(node.getAttr('style'),'border:2px solid #ccc;color:#ccc','修改样式中的一个');
node.setStyle({
'font':'12px',
'background':'#ccc'
});
equals(node.getAttr('style'),'background:#ccc;font:12px;border:2px solid #ccc;color:#ccc');
equals(node.getAttr('style'),'background:#ccc;font:12px;border:2px solid #ccc;color:#ccc','添加新样式');
node.setStyle({
'font':'',
'background':'',
'border':'',
'color':''
});
equals(node.getAttr('style'),undefined);
equals(node.getAttr('style'),undefined,'清空样式');
node.setStyle('border','<script>alert("")</script>');
equals(node.getAttr('style'),"border:&lt;script&gt;alert(&quot;&quot;)&lt;/script&gt;;");
equals(node.toHtml(),'<div style=\"border:&lt;script&gt;alert(&quot;&quot;)&lt;/script&gt;;\" ><div></div></div>')
node.innerHTML('<div>asdfasdf<b>sdf</b></div>')
equals(node.getAttr('style'),"border:&lt;script&gt;alert(&quot;&quot;)&lt;/script&gt;;",'脚本');
equals(node.toHtml(),'<div style=\"border:&lt;script&gt;alert(&quot;&quot;)&lt;/script&gt;;\" ><div></div></div>','脚本转html');
node.innerHTML('<div>asdfasdf<b>sdf</b></div>');
node.removeChild(node.firstChild(),true);
equals(node.toHtml(),'<div style=\"border:&lt;script&gt;alert(&quot;&quot;)&lt;/script&gt;;\" >asdfasdf<b>sdf</b></div>')
equals(node.toHtml(),'<div style=\"border:&lt;script&gt;alert(&quot;&quot;)&lt;/script&gt;;\" >asdfasdf<b>sdf</b></div>','移除子节点');
});
//getIndex
test( 'getIndex', function() {
var uNode = UE.uNode;
var node = uNode.createElement('div');
node.innerHTML('<div>asdfasdf<b>sdf</b></div>')
node.removeChild(node.firstChild(),true);
var tmp = new UE.uNode.createElement('div');
node.appendChild(tmp);
equals(tmp.getIndex(),2);
equals(tmp.getIndex(),2,'节点索引');
});
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册