利用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选区
解决方案 »
- 为什么alert()放在head中能弹出对话框,在body中不能!
- 自己写的表单验证插件,无解释,无说明,看懂来,使的来……
- 请高手帮忙form表单提交,在IE和FF下采用不同解码。导致不是IE乱码就是FF乱码。
- 哪位大虾来帮帮忙啊!
- 请教JS 解析XML问题
- 代码运行到(姓名不允许为空)之后就不再执行了
- 简单问题,急.请大侠们帮忙
- 象这种情况,如果用javascript为input设置value值?
- 如何遍历用 id="Table_xx" 标识的tag (xx=1..100) ??
- 如何屏蔽在框架上的鼠标右键,而不屏蔽在框架里面的鼠标右键?在显等待!!!!
- 有哪位大神知道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;
}
}
},