/**
* 插入分割线插件
* @file
* @since 1.2.6.1
*/
/**
* 插入分割线
* @command horizontal
* @method execCommand
* @param { String } cmdName 命令字符串
* @example
* ```javascript
* editor.execCommand( 'horizontal' );
* ```
*/
UE.plugins["horizontal"] = function() {
var me = this;
me.commands["horizontal"] = {
execCommand: function(cmdName) {
var me = this;
if (me.queryCommandState(cmdName) !== -1) {
me.execCommand("insertHtml", "
");
var range = me.selection.getRange(),
start = range.startContainer;
if (start.nodeType == 1 && !start.childNodes[range.startOffset]) {
var tmp;
if ((tmp = start.childNodes[range.startOffset - 1])) {
if (tmp.nodeType == 1 && tmp.tagName == "HR") {
if (me.options.enterTag == "p") {
tmp = me.document.createElement("p");
range.insertNode(tmp);
range.setStart(tmp, 0).setCursor();
} else {
tmp = me.document.createElement("br");
range.insertNode(tmp);
range.setStartBefore(tmp).setCursor();
}
}
}
}
return true;
}
},
//边界在table里不能加分隔线
queryCommandState: function() {
return domUtils.filterNodeList(
this.selection.getStartElementPath(),
"table"
)
? -1
: 0;
}
};
// me.addListener('delkeyup',function(){
// var rng = this.selection.getRange();
// if(browser.ie && browser.version > 8){
// rng.txtToElmBoundary(true);
// if(domUtils.isStartInblock(rng)){
// var tmpNode = rng.startContainer;
// var pre = tmpNode.previousSibling;
// if(pre && domUtils.isTagNode(pre,'hr')){
// domUtils.remove(pre);
// rng.select();
// return;
// }
// }
// }
// if(domUtils.isBody(rng.startContainer)){
// var hr = rng.startContainer.childNodes[rng.startOffset -1];
// if(hr && hr.nodeName == 'HR'){
// var next = hr.nextSibling;
// if(next){
// rng.setStart(next,0)
// }else if(hr.previousSibling){
// rng.setStartAtLast(hr.previousSibling)
// }else{
// var p = this.document.createElement('p');
// hr.parentNode.insertBefore(p,hr);
// domUtils.fillNode(this.document,p);
// rng.setStart(p,0);
// }
// domUtils.remove(hr);
// rng.setCursor(false,true);
// }
// }
// })
me.addListener("delkeydown", function(name, evt) {
var rng = this.selection.getRange();
rng.txtToElmBoundary(true);
if (domUtils.isStartInblock(rng)) {
var tmpNode = rng.startContainer;
var pre = tmpNode.previousSibling;
if (pre && domUtils.isTagNode(pre, "hr")) {
domUtils.remove(pre);
rng.select();
domUtils.preventDefault(evt);
return true;
}
}
});
};