html取编辑框信息,取编辑框中的HTML的问题

var initHTML ="

《Bound0 全能网页客户端》

《Bound0 全能网页客户端》是一个安装在客户端的可执行程序(EXE),可以响应网页上的链接和脚本的动作,有很多功能(包括运行本地程序、读写本地文件和注册表等)。
为了防范被滥用或不正当地利用,对《Bound0 全能网页客户端》采用了以下安全措施:1、《Bound0 全能网页客户端》的安装和注册过程完全在用户知情的条件下进行;
2、每一份售出的《Bound0 全能网页客户端》所具有的实际功能根据具体需要设定,实际不需要的功能不会被开放;
3、《Bound0 全能网页客户端》对网页的响应经过特别限制,不会对授权范围以外的网页做出响应;
4、对每一份售出的《Bound0 全能网页客户端》拷贝均留有记录

请说明你的具体需要(想要实现什么样的功能),我会做出一个示例网页来让你看,如果觉得确实能够满足需要再购买。

"

function start() {

Editor.document.designMode="ON";

Editor.document.open();

Editor.document.write(initHTML);

Editor.document.close();

}

/*

******************************************************************************************************

conts和contp常常会包含浏览器自动添加的一些\r\n(回车、换行符),这会造成后面“磨”的困难,有必要先进行格式化。但是由于对于pre、textarea、script、style和xmp这几种标签的内容来说\r\n可能是有意义的,所以不能简单地用.replace(/[\r\n]/g,"")的办法去除。必须既要去除浏览器自动添加的\r\n,又要保全pre、textarea、script、style和xmp这几种标签的内容。

******************************************************************************************************

*/

function formatfor(va) {

var t=va.replace(/\r/g,'');

t = t.replace(/()([^\r]*?)()/img,

function (){return arguments[1]+arguments[3].replace(/\n/g, "\r")+arguments[4]})

t = t.replace(/\n/g, "");

return t

}

/*

****************************************

Created by Bound0 (bound0@tom.com)

http://bbs.blueidea.com/viewthread.php?tid=2661868

转载或应用时请保留此声明!

****************************************

*/

function first()

{

//首先要取得编辑区的内容

var oSel = Editor.document.selection.createRange();

var conts=oSel.htmlText //内容选中部分对应的代码,首尾可能带有多余标签(就是前面例子中的蓝色标签)。

var textLength = Editor.document.body.innerText.length

oSel.moveStart("character", -1*textLength) //把选择区的开始位置往前闪,再取一次内容

var contp=formatfor(oSel.htmlText) //选中部分及选中部分前的内容,末尾可能带有多余标签。

var conta=formatfor(Editor.document.body.innerHTML) //整个内容

var contpa=''

var partC=""

var partB=""

var partA=""

//接下来用上面取得的三个内容互相“磨”,把多余的标签“磨”掉。

var m=0

m=conta.indexOf(contp.substr(0,3)) //校正对齐contp和conta的开始位置,有时候conta开始处可能会有多余的

,造成两者对不齐

var f=contp.length

for(;f>0;f--)

{if(conta.substr(m,f)==contp.substr(0, f)){contpa=contp.substr(0,f);partC=conta.substr(m+f);break}}

var ko=contp.substr(f)

var kol=ko.length

var ty=conta.substr(m+f,kol)

var hu=""

for(var b=1;b

/*

****************************************************************************************************

有时候浏览器自动补全的标签并非添加在选中区域的最外围。例如有时会把

结束标签添在标签之前,而这里的标签应该是保留在partB中的,如果把连同一起“磨”掉就不对了。对此采取的办法是检查被“磨”掉的碎渣部分,把碎渣捡起来“磨”好,再装到partB的末尾。

****************************************************************************************************

*/

var k=contpa.length

cont=conts.replace(/\n/g, "")

var u=cont.length

if(cont==contpa.substr(k-u)){partB=cont;partA=contpa.substr(0,k-u)}else{

for(u=cont.length;u>0;u--)

{if(cont.lastIndexOf(contpa.substr(k-u))!=-1){partB0=contpa.substr(k-u);partA0=contpa.substr(0,k-u);break}}

/*

****************************************************************************************************

对于选中的内容刚好处于一个标签的内部的这种情况,它的具体情况可能又是五花八门的,我个人采取的办法是把格式化和不格式化都尝试一下,除非格式化的结果令partB长度较长(这说明浏览器自动添加的那些\r\n使“磨”出来的partB长度变短),否则就不格式化。

****************************************************************************************************

*/

contt=formatfor(conts)

if(hu!="")if(contt.substr(contt.length-kol)==ko)contt=contt.substr(0,contt.length-kol)+hu

u=contt.length

var youm=contpa.lastIndexOf(contt)

if(youm!=-1){partB=contt;partA=contpa.substr(0,youm);partC=contpa.substr(youm+u)+partC}else{

for(;u>0;u--){if(contt.lastIndexOf(contpa.substr(k-u))!=-1){partB1=contpa.substr(k-u);partA1=contpa.substr(0,k-u);break}}

if(partB1.length>partB0.length){partB=partB1;partA=partA1}else{partB=partB0;partA=partA0}

}

}

if(partB.substr(partB.length-1)=="

if(partB.substr(partB.length-2)==""){partB=partB.substr(0,partB.length-2);partC=""+partC}

//显示按要求分好的A、B、C三段内容。

alert(partA)

alert(partB)

alert(partC)

}

先选择一段文字
再点击这个按钮看看

运行代码

复制代码

另存代码

提示:您可以先修改部分代码再运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值