我将SPAN标签添加到tinyMCE可视化编辑器中以显示突出显示的文本。
在高亮显示的跨度内键入内容时,可能会出现光标陷入......的情况,无法键入跨度的一侧。
我创建了一些JavaScript,关于“双空间”
下面的代码火灾...
1)检查当前光标位置是我强调SPAN
2中。 )检查当前光标位置是否在该SPAN的末尾(就在关闭/ SPAN之前)
3.)将当前光标从关闭/ SPAN的左侧移动到关闭/ SPAN的右侧
任何或所有的帮助将不胜感激。
正确的代码!
在打字时,如果你发现自己在一个SPAN元素的结束自我,按下空格键两次,以打破目前的SPAN
var mycc = ''
ed.onKeyDown.add(function(ed, e){
evt = e || window.event;
var charCode = evt.keyCode || evt.which;
// if dbl space
if(mycc == charCode && charCode==32){
var curElm = ed.selection.getRng().startContainer;
var caretPos = ed.selection.getBookmark(curElm.textContent).rng.startOffset;
// if end of element
if(caretPos==curElm.textContent.length){
var mkr = '<span class="marker">!</span>'
// add marker for cursor positioning
ed.selection.setContent(mkr)
var newstr = ''
// split content at marker (plus ending span for my case)
var c = ed.getContent({format : 'raw'}).split(" "+mkr+"</span>")
if(!c[1]){
c = ed.getContent({format : 'raw'}).split(" "+mkr+"<br></span>")
}
// if the conent was split, adjust as needed
if(c[0]&&c[1]){
// add closing span back plus marker after
newstr = c[0]+'</span>'+mkr+c[1]
// update content
ed.setContent(newstr)
}
// find the marker
var marker = jQuery(ed.getBody()).find('.marker');
// set selection
ed.selection.select(marker.get(0));
// remove marker
marker.remove();
}
}
mycc = charCode
})
ed.onMouseDown.add(function(ed, e){
mycc = ''
})
上面仍然有效的,但我去下面的代码。这个代码爆发跨度的结束位置的按压右时,而不是AROW的DBL空间
享受
var mycc = ''
ed.onKeyDown.add(function(ed, e){
evt = e || window.event;
var charCode = evt.keyCode || evt.which;
// if dbl space
//if(mycc == charCode && charCode==32){
if(charCode==39){
var curElm = ed.selection.getRng().startContainer;
var caretPos = ed.selection.getBookmark(curElm.textContent).rng.startOffset;
// if end of element
if(caretPos==curElm.textContent.length){
var mkr = '<span class="marker">!</span>'
ed.selection.setContent(mkr)
var newstr = ''
var c = ed.getContent({format : 'raw'}).split(mkr+"</span>")
if(!c[1]){
c = ed.getContent({format : 'raw'}).split(mkr+"<br></span>")
}
if(c[0]&&c[1]){
newstr = c[0].replace(/^\s\s*/, '').replace(/\s\s*$/, '')+'</span> '+mkr+c[1].replace(/^\s\s*/, '').replace(/\s\s*$/, '').replace(/^[\s( ]+/g,'')
ed.setContent(newstr)
e.preventDefault()
}
var marker = jQuery(ed.getBody()).find('.marker');
ed.selection.select(marker.get(0));
marker.remove();
}
}
mycc = charCode
})
谢谢,但BODY总是在输入时作为节点返回 –