利用iframe创建的富文本编辑器,其中两个功能思路暂无好的解决办法:
1.用户在编辑器中,选择文字,并选择特殊格式,如“副标题”,我则将所选区域的文字外围添加<div class='副标题对应的ClassName'></div>,execCommand也能勉强实现这个功能,但是每一次execCommand 都可能新增标签,如果当前的格式比较特殊,就很复杂,期待有别的思路或者好的解决办法
2.用户在回车之后,如果当前回车的这段文字(我的回车生成的div)首字是序号形式(1,2,3或者中文一,二,三),则将这个首字的样式修改为加粗。
现在的问题是:(a)获取选区文字,并替换,如果选区的字是重复的就不能实现,能不能获取到选区前后的位置,或者获取到选区所对应的parent父元素
(b)我怎么获取回车时前一段文字,比如所对应的div标签对象因为是内部使用,暂时只需要兼容火狐和谷歌浏览器。
为什么最多只能给100分啊??编辑器iframe选区
1.用户在编辑器中,选择文字,并选择特殊格式,如“副标题”,我则将所选区域的文字外围添加<div class='副标题对应的ClassName'></div>,execCommand也能勉强实现这个功能,但是每一次execCommand 都可能新增标签,如果当前的格式比较特殊,就很复杂,期待有别的思路或者好的解决办法
2.用户在回车之后,如果当前回车的这段文字(我的回车生成的div)首字是序号形式(1,2,3或者中文一,二,三),则将这个首字的样式修改为加粗。
现在的问题是:(a)获取选区文字,并替换,如果选区的字是重复的就不能实现,能不能获取到选区前后的位置,或者获取到选区所对应的parent父元素
(b)我怎么获取回车时前一段文字,比如所对应的div标签对象因为是内部使用,暂时只需要兼容火狐和谷歌浏览器。
为什么最多只能给100分啊??编辑器iframe选区
解决方案 »
- 如何使这个菜单的链接弹出的页面在下方的iframe里显示
- 高手请进 给个图片自动播放的思路
- 怎么获得热点区域和非热点区域,大家帮忙解决个问题。
- 如何使用Javascript在IE上生成浮动工具条?
- 在线HTML文本编辑器里面包含的两个JS文件里的有些方法的用途不明白,希望高人帮助解答.
- 一个简单的javascript问题,希望高手指导,谢谢您了。
- IE5下出现错误,对象不支持此属性或方法,ie6正常,高手帮忙
- 求当打开网站时自动设为主页的恶意代码
- 问个frame的问题!
- 如何将子窗口中的数据传到其父窗口
- 有哪位大神知道www.sina.com.cn的头部效果是怎么实现的?
- 系统在ie8上无问题,到ie9上出现输入框无法点击,下拉框需要多选几次等问题
對你的兩個問題都有幫助
另外,你可以自己看看有關 Range對象的說明getCursorSelect: function(){
if (this.iframeDoc.selection) {
this.selection = this.iframeDoc.selection;
this.range = this.selection.createRange();
try {
this.parent = this.range.parentElement();
} catch (e) {
return;
}
} else {
try {
this.selection = this.iframe.contentWindow.getSelection();
} catch (e) {
return;
}
this.range = this.selection.getRangeAt(0);
this.parent = this.range.commonAncestorContainer;
if(this.parent.nodeName == "#text") {
this.parent = this.parent.parentNode;
}
}
},
getCursorSelect: function(){
if (this.iframeDoc.selection) {
this.selection = this.iframeDoc.selection;
this.range = this.selection.createRange();
try {
this.parent = this.range.parentElement();
} catch (e) {
return;
}
} else {
try {
this.selection = this.iframe.contentWindow.getSelection();
} catch (e) {
return;
}
this.range = this.selection.getRangeAt(0);
this.parent = this.range.commonAncestorContainer;
if(this.parent.nodeName == "#text") {
this.parent = this.parent.parentNode;
}
}
},