请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 40143|回复: 32

[突破]HTML在线编辑器任意设置字号大小(请大家检查bug) [复制链接]

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-28 18:15:26 |显示全部楼层
HTML在线编辑器相信大家见得多了,有些流行的在线编辑器具有很丰富的功能。但美中不足的是,现有的HTML在线编辑器设置字号大小通常只限于1-7号字而已,不能更好地满足人们的需要。能不能实现像Word那样任意地设置字号大小呢?经过长时间的攻关,Bound0终于可以肯定地回答这个问题了,呵呵呵!请大家共同分享此“Eureka之喜悦”吧!


我们通常所见的内嵌在网页中的HTML在线编辑器,其核心本质是一个IFRAME

例如:<IFRAME id="Editor" Name="Editor" style="WIDTH: 550; HEIGHT: 480"></IFRAME>

令 Editor.document.designMode="ON";

此时这个IFRAME就是一个设计模式的HTML编辑器了,可以通过脚本

Editor.document.selection.createRange().execCommand(command)

对选中的内容执行command,进行编辑操作。

由于浏览器本身提供的编辑功能非常有限,因此现在流行的HTML在线编辑器大都进行了一些扩展。(在本版精华中收集的PiscesTextEditor就是此类技术的集大成者之一。)

在本文发表之前,HTML在线编辑器在设计模式下的字号(字体大小)任意设定功能尚无成功实现,本文所述技术不仅在此方面实现了零的突破,还对HTML在线编辑器的其他扩展功能的实现作出了广泛的启示。



[前人的误区]

现在流行的HTML在线编辑器的功能可以说已经很丰富了,为什么唯独任意设置字体大小这个看起来并不华丽的功能没有被做出来呢?让我们先来了解一下其中的原因好了:


假设编辑区的HTML内容(Editor.document.body.innerHTML)是

<H1>逍遥主义者的宣言</H1>

<H3>十个小老头
<BR>朱氵太子
</H3>

<P>我们不是败家浪子,我们从不游手好闲;我们不是无用书生,我们从不怨天忧地;我们不是嬉皮士,我们从不玩世不恭;我们不是妄想家,我们从不脱离实际;我们不是阿Q,我们从不麻木颓废;我们不是狂人,我们从不争风吃醋。我们是创造者,我们是改变者,我们是革命者。我们不是在不幸中去幻想幸福的人,我们甚至不是去追求、寻找幸福的人,我们是自己制造幸福的人,我们是快乐的发源者。首先,在我们经历必当经历的经历时,我们不允许自己不快乐!这就是,逍遥主义的真谛。</P>

<P><BIG>将你的梦打开,填进我
的希望。谁都不必介怀,一点点的分量。面对别人述说,命运烛转轮回,世间天空海阔,种种因缘寂晦……</BIG></P>


假设选中的是红色的部分,则
Editor.document.selection.createRange().htmlText的内容是


<P>者。我们不是在不幸中去幻想幸福的人,我们甚至不是去追求、寻找幸福的人,我们是自己制造幸福的人,我们是快乐的发源者。首先,在我们经历必当经历的经历时,我们不允许自己不快乐!这就是,逍遥主义的真谛。</P>

<P><BIG>将你的梦打开,填进我</BIG></P>

看见多出来几个蓝色的标签了吧?产生这种现象是因为:“任何时候,document.selection.createRange().htmlText取出来的html代码都是完整成对的,即使当前选中的内容横跨了几个不同的标签”(卖坏梨语),所以IE会自作主张地把不完整的标签补齐。

就是因为这个原因,当选中的内容在Editor.document.body.innerHTML中对应的代码包含不完整的标签时,在Editor.document.selection.createRange()上做pasteHTML可能会吃不进去(有不完整的<table>等时),或者出现明显的BUG。

而现在的HTML在线编辑器所提供的除了基本的Editor.document.selection.createRange().execCommand(command)之外的各种功能几乎都是通过在Editor.document.selection.createRange()上做pasteHTML来实现的。所以字号的自由设定才始终没能实现。


[解决之道]

一切关于“问题的解决之道”的方法论都不外乎是“变通”二字的某种讲法。既然这个功能不适宜用Editor.document.selection.createRange()的pasteHTML()方法来实现,我们就不用它好了。一个变通的想法是:通过改变Editor.document.body.innerHTML的全局来实现。

很显然,至少在理论上,整体改变Editor.document.body.innerHTML可以实现任何我们想要的HTML编辑效果

多好,随着灵光一闪,战略上的大问题在一秒钟之内就被我们搞定了!接下来让我们看看具体的实现方法吧:


要想通过改变Editor.document.body.innerHTML来给选中的内容设置字号大小,首先要解决的一个问题是在Editor.document.body.innerHTML中对选中内容所对应的代码进行定位。这算不上是个超级复杂的问题,但我知道对这个问题的解答也是很多人梦寐以求的。或许能有很多种解,下面给出我Bound0的办法。

显然这个问题不可以像一些人想象的那样随随便便地用正则或者查找之类的方法就搞定,设想我在
Bound0000000000000000000000000000000000000000000000000000中随便选中了一个0(表示为红色)
,用正则随便查到了一个0,很难确保就是我选中的那个,同样的道理,如果是在雷同的若干段HTML代码中选中了一段,用查找所选字符的方法是不能确保正确定位的。

这个问题的合理的解应该能把Editor.document.body.innerHTML分成三段:partA—选中内容之前的内容所对应的代码、partB—选中内容所对应的代码(就是前面例子中红色的部分)、partC—选中内容之后的内容所对应的代码。(在全选的时候,partA和partC都是空字符串;选中内容为空的时候,从开头到光标位置的内容所对应的代码是partA,partB为空字符串,光标之后的内容所对应的代码是partC)

看看主要的代码:

  1. function first()
  2. {
  3. //首先要取得编辑区的内容

  4. var oSel = Editor.document.selection.createRange();
  5. var conts=''+oSel.htmlText //内容选中部分对应的代码,首尾可能带有多余标签(就是前面例子中的蓝色标签)。
  6. var textLength = Editor.document.body.innerText.length
  7. oSel.moveStart("character", -1*textLength) //把选择区的开始位置往前闪,再取一次内容
  8. var contp=''+oSel.htmlText //选中部分及选中部分前的内容,末尾可能带有多余标签。
  9. var conta=''+Editor.document.body.innerHTML //整个内容

  10. var contpa=''
  11. var partC=""
  12. var partB=""
  13. var partA=""

  14. //接下来通过两组循坏,用上面取得的三个内容互相“磨”,把多余的标签“磨”掉。

  15. var m=0
  16. m=conta.indexOf(contp.substr(0,3)) //校正对齐contp和conta的开始位置,有时候conta开始处可能会有多余的<p>,造成两者对不齐

  17. for(var f=contp.length;f>0;f--)
  18. {if(conta.substr(m,f)==contp.substr(0, f)){contpa=contp.substr(0,f);partC=conta.substr(m+f);break}}

  19. var k=contpa.length
  20. for(var u=conts.length;u>0;u--)
  21. {if(conts.lastIndexOf(contpa.substr(k-u))!=-1){partB=contpa.substr(k-u);partA=contpa.substr(0,k-u);break}}

  22. if(conts.length==0)partA=contpa

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

  24. alert(partA)
  25. alert(partB)
  26. alert(partC)
  27. }
复制代码


实际使用的代码比这个要复杂一些。因为想要应付各种特殊情况、考虑周全也不容易呢。

上面代码所取到的conts和contp常常会包含浏览器自动添加的一些\r\n(回车、换行符),这会造成后面“磨”的困难,有必要先进行格式化。但是由于对于pre、textarea、script、style和xmp这几种标签的内容来说\r\n可能是有意义的,所以不能简单地用.replace(/[\r\n]/g,"")的办法去除。必须既要去除浏览器自动添加的\r\n,又要保全pre、textarea、script和xmp这几种标签的内容。这种局面看起来确实复杂,不过好在浏览器不会在我们要保全的那几种标签的内容里自动添加\r\n,而这个时候原本是罪魁祸首的document.selection.createRange().htmlText的标签自动封闭机制反倒为我们提供了方便:除非选中的内容刚好处于一个标签的内部,否则在conts中将出现完整成对的标签,这样我们就可以比较容易地把位于pre、textarea、script、style和xmp这几种标签中的内容区分出来,只对其他内容进行去除\r\n的操作。而对于选中的内容刚好处于一个标签的内部的这种情况,它的具体情况可能又是五花八门的,我个人采取的办法是把格式化和不格式化都尝试一下,除非格式化的结果令partB长度较长(这说明浏览器自动添加的那些\r\n使“磨”出来的partB长度变短),否则就不格式化。

有时候浏览器自动补全的标签并非添加在选中区域的最外围。例如有时会把</p>结束标签添在</font>标签之前,而这里的</font>标签应该是保留在partB中的,如果把</font>连同</p>一起“磨”掉就不对了。对此采取的办法是检查被“磨”掉的碎渣部分,把碎渣捡起来“磨”好,再装到partB的末尾。

运行演示例

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




Tip: 留心的朋友可能已经想到了:这段代码还可以用于实现在 “设计/代码” 模式切换过程中,令选中的文字或光标位置保持对应


成功地实现对内容选中部分的定位之后,接下来要解决的第二个问题是:根据需要改变选中部分的代码

HTML代码是由标签组成的,我们需要处理的是对字号大小有影响的标签,可分为6种情况:

1、font标签,毋庸置疑,这个标签需要重点处理;

2、h[1-6]、pre、button、listing、big、small、tt、code、kbd、samp等具有字号改变作用的标签

3、浏览器所能识别的大多数标签在带有style="FONT-SIZE: xxx;"样式属性时将可能对字号大小产生影响;

4、select、input、option和object,这四个标签也可以带上FONT-SIZE样式(算是稀奇古怪的用法),但其效果特殊,应将它们从上一条中排除;

5、sup和sub虽然也会影响字号大小,但是它们的这种影响在重新设置字号时应该被保留,所以对这两个标签无需作处理。

6、其他会造成位于自己前面的font标签的字号效力中断的标签,例如<td>、</td>、<caption>、</caption>、<th>、</th>、<tr>、</tr>、<table>、</table>、<thead>、</thead>、<tbody>、</tbody>、<tfoot>、</tfoot>……还可能有哪些一时也想不起来,慢慢完善吧。

处理过程如下(具体代码见演示例):

0、在做所有的处理之前,先要将textarea、xmp、script和style标签的内容封印起来,以保护它们不被破坏。

1、处理font标签:

(1)尝试将PartB内的所有font标签配对。(Tip:这段代码也可以用来做其他的“语法分析”工作)

(2)将所有在PartB内封闭的标签(能配上对的)中的字号属性去除。

(3)将partB中未结束的<font>标签置标(做上标记)。

(4)将partB中没有配上对的</font>结束标签(开始标签在partA中)置标。

2、处理其他标签:将partB中如前所述的会造成位于自己前面的font标签的字号效力中断的各种HTML标签置标。

3、收尾工作:(怎么?已经结束了吗?)

(1)将上面两步产生的所有置标位置视为“中断点”。

(2)在partB开头和第一个“中断点”之间所夹的内容、最后一个“中断点”和partB末尾之间所夹的内容,以及各个“中断点”之间所夹的内容的前面添上一个行使字号效力的<font ……>,内容的后面添上</font>。

(3)解除textarea、xmp、script和style标签内容的封印。

(4)把partA+partB+partC拼接起来,输出到Editor.document.body.innerHTML。

OK. 一切都搞定了!

完整的运行演示例

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



[经验总结]
我先歇歇,明儿再说吧。

[ 本帖最后由 bound0 于 2006-8-25 13:20 编辑 ]
已有 1 人评分威望 收起 理由
hutia + 4 精品文章

总评分: 威望 + 4   查看全部评分

[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.
西部数码顶级域名注册商39元抢注!
bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-28 18:16:47 |显示全部楼层
版权声名要求放在醒目位置,商业用途要求付费。

[ 本帖最后由 bound0 于 2006-9-23 12:54 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-28 18:17:06 |显示全部楼层
很想把这个技术用来做中国版的Writely

苦于没有投资和人手

http://bbs.blueidea.com/thread-2673116-1-1.html

[ 本帖最后由 bound0 于 2006-9-3 21:18 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

永远的巴蒂

钻石会员 手机认证 

帖子
8337
体力
5857
威望
30
居住地
广东省 广州市

9周年组织勋章

发表于 2006-7-28 18:30:45 |显示全部楼层
占位

使用道具 举报

CK同伈鎖

荣誉管理

帖子
4640
体力
19243
威望
372
发表于 2006-7-28 19:30:14 |显示全部楼层
靠. 这个强悍. bound 兄的要支持

使用道具 举报

闪闪闪客

金牌会员 手机认证 

帖子
6627
体力
4607
威望
7
发表于 2006-7-28 20:04:03 |显示全部楼层

报告一"BUG"

我选了几个字,然后把它设定某一号字体,我选的那些字就会自动取消选择,如果我想再换个字号,还得重新选那些字。
跟Word比起来。。。。嘿嘿~~~

使用道具 举报

智者千虑

银牌会员 手机认证 

帖子
793
体力
4082
威望
0
居住地
广西壮族自治区 桂林市
发表于 2006-7-28 21:40:44 |显示全部楼层
发现个问题:字号设置过一次后就不能设置第2次了```

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-28 21:40:57 |显示全部楼层
原帖由 乱世狂闪 于 2006-7-28 20:04 发表
我选了几个字,然后把它设定某一号字体,我选的那些字就会自动取消选择,如果我想再换个字号,还得重新选那些字。
跟Word比起来。。。。嘿嘿~~~


已修正,谢谢!

[ 本帖最后由 bound0 于 2006-8-26 09:19 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-28 21:43:25 |显示全部楼层
原帖由 liaoyizhi520 于 2006-7-28 21:40 发表
发现个问题:字号设置过一次后就不能设置第2次了```


这个问题已改正,谢谢啦!;)

[ 本帖最后由 bound0 于 2006-7-29 13:31 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

hutia 

诘屈聱牙

荣誉管理

帖子
5622
体力
23239
威望
367
居住地
江苏省 苏州市
发表于 2006-7-28 23:37:33 |显示全部楼层
打上4分先.......精华嘛....等俺看看再说......

使用道具 举报

闪闪闪客

金牌会员 手机认证 

帖子
6627
体力
4607
威望
7
发表于 2006-7-29 11:52:13 |显示全部楼层
Tip:可以把自己的网页复制到编辑区里作测试。

[ 本帖最后由 bound0 于 2006-8-26 09:21 编辑 ]

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-29 13:33:46 |显示全部楼层
代码已更新,请继续测试。:D
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

帖子
57
体力
95
威望
0
发表于 2006-7-29 16:31:07 |显示全部楼层
楼主厉害!

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-30 08:31:08 |显示全部楼层
大家帮我看看,现在还有啥bug没,这个东西要想考虑周详不太容易。

Tip:可以把你的网页复制到编辑区里作测试。

谢谢大家。
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

缘由心生

银牌会员

帖子
473
体力
2799
威望
2
发表于 2006-7-31 09:41:27 |显示全部楼层
有一个建议,能不能像word那样在字体,字号中直接显示当前文字的字体,字号呢?

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-31 11:59:50 |显示全部楼层
原帖由 welcome58 于 2006-7-31 09:41 发表
有一个建议,能不能像word那样在字体,字号中直接显示当前文字的字体,字号呢?


;)嗯,这也不难做到。应该是下一步的方向吧。

我目前主要关心的是设置字号问题是否相对完美地解决了,是否还有明显的错误或是异常情况。

[ 本帖最后由 bound0 于 2006-7-31 12:21 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

jdeasy 
帖子
11
体力
41
威望
0
发表于 2006-7-31 15:15:34 |显示全部楼层
在测试页面里,选择“[批量数据转录、整合]”几个红色的大字,一换字号,就多出了<p>文本,还有“[批量数据转录、整合]”字号并没有变化。

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-7-31 17:55:23 |显示全部楼层
原帖由 jdeasy 于 2006-7-31 15:15 发表
在测试页面里,选择“”几个红色的大字,一换字号,就多出了<p>文本,还有“”字号并没有变化。


谢谢,已修正!

[ 本帖最后由 bound0 于 2006-7-31 19:17 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

newsn 
帖子
396
体力
1101
威望
0
发表于 2006-8-15 22:00:10 |显示全部楼层
其实我很不喜欢这些编辑器里面的几号字的说法。
觉得还是以px为单位比较好,
这样就不会出现字体乎大呼小了

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-8-16 13:14:37 |显示全部楼层
原帖由 newsn 于 2006-8-15 22:00 发表
其实我很不喜欢这些编辑器里面的几号字的说法。
觉得还是以px为单位比较好,
这样就不会出现字体乎大呼小了


嗯,这个在做编辑器的时候可以合理的设计一下,搞成可选的设置就差不多可以满足各种需求了吧?

我目前关心的是字号设定这个单纯的功能本身是否完善了。暂不考虑其他因素。
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

帖子
39
体力
234
威望
0
居住地
山东省 潍坊市
发表于 2006-8-18 10:02:23 |显示全部楼层
大哥的JS好强啊

使用道具 举报

andot 
帖子
273
体力
2267
威望
14
发表于 2006-8-19 11:22:24 |显示全部楼层
楼主太牛了!顶起来!

使用道具 举报

meiuu 
帖子
66
体力
142
威望
0
发表于 2006-8-22 17:33:55 |显示全部楼层

代码我收藏了

楼主太牛了!
向你学习
这是小弟的网页看看行不http://www.meiuu.com

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-8-23 10:59:48 |显示全部楼层
请大家寻找bug,以助我完善代码。

请勿水顶。

谢谢!
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

myhyli 

卖坏梨

荣誉管理 手机认证 

帖子
11865
体力
53501
威望
220
居住地
浙江省 杭州市
发表于 2006-8-23 16:57:34 |显示全部楼层
嗯嗯,至少有个硬伤,原来的选区丢了

其实也不是完全不能用pasteHTML来做,以下是我大致的方法,还比较粗糙,没有对已经加样式的内容做清除样式处理,只是处理了选区跨多个不完整标签的情况

基本想法就是分段执行pasteHTML
  1.     function test2(){
  2.         var sel = document.selection;
  3.         var type = sel.type;
  4.         var rng = sel.createRange();

  5.         if("Control"==type){
  6.             return;
  7.         }
  8.         
  9.         var tempParentElement = null;
  10.         var separator = [];
  11.         var i = 0;
  12.         while(true){
  13.             var rng2 = rng.duplicate();
  14.             rng2.collapse(true);
  15.             rng2.moveStart("character",i);
  16.             rng2.moveEnd("character",1);

  17.             var isOutSide = rng2.compareEndPoints("StartToEnd",rng);
  18.             if(-1==isOutSide){
  19.                 if(""!=rng2.text){
  20.                     var parentElement2 = rng2.parentElement();
  21.                     
  22.                     //记录分段点位置
  23.                     if(tempParentElement!=parentElement2){
  24.                         separator[separator.length] = i;
  25.                         tempParentElement = parentElement2;
  26.                     }
  27.                 }

  28.                 i++;
  29.             }else{
  30.                 separator[separator.length] = i;
  31.                 break;
  32.             }
  33.         }

  34.         //方式1,考虑pasteHTML后,各个分段TextRange会发生变化,所以从后往前加标签,这样即使后面的TextRange发生变化也不会影响前面的
  35.         for(var i=separator.length-1;i>0;i--){
  36.             var start = separator[i-1];
  37.             var end = separator[i]-separator[i-1];

  38.             var rng2 = rng.duplicate();
  39.             rng2.collapse(true);
  40.             rng2.moveStart("character",start);
  41.             rng2.moveEnd("character",end);

  42.             rng2.pasteHTML("<span style='font-size:10px'>"+rng2.htmlText+"</span>");            
  43.             
  44.         }
  45.         
  46.         //方式2,保存TextRange
  47.         /*
  48.         //分段复制TextRange
  49.         var rngArr = [];
  50.         for(var i=1;i<separator.length;i++){
  51.             var start = separator[i-1];
  52.             var end = separator[i]-separator[i-1];

  53.             var rng2 = rng.duplicate();
  54.             rng2.collapse(true);
  55.             rng2.moveStart("character",start);
  56.             rng2.moveEnd("character",end);

  57.             rngArr[rngArr.length] = rng2.duplicate();
  58.             
  59.         }

  60.         //分段加标签
  61.         for(var i=0;i<rngArr.length;i++){
  62.             rngArr[i].pasteHTML("<span style='font-size:10px'>"+rngArr[i].htmlText+"</span>");            
  63.         }*/

  64.     }
复制代码

使用道具 举报

bound0 楼主

老饕

版主 手机认证 

帖子
6593
体力
8785
威望
287
发表于 2006-8-24 13:22:59 |显示全部楼层
~~~~哎呀,卖坏梨来了!!!(我当初来“蓝色理想”,就是被您的作品给吸引来的……)

选区的问题,一开始记下位置,完事再重新选上也就是了吧。(已修正谢谢!)

分段执行pasteHTML有个先天的问题:把Undo、Redo给搞乱了。所以我就没往那个方向想。

而且,从整体改变Editor.document.body.innerHTML可以实现任何我们想要的效果,不单限于改变字号大小,是一条大路。

[ 本帖最后由 bound0 于 2006-8-25 13:23 编辑 ]
[Bound0 专题列表]
Pas besoin de gril : l'enfer, c'est les Autres.

使用道具 举报

帖子
1282
体力
2882
威望
0
居住地
四川省 成都市
发表于 2006-9-8 22:05:10 |显示全部楼层
在线编辑器-我目前最需要的是:

W3C标准的在线编辑器,而且转换后不要大写?

____________________________________--
不要大写容易,符合标准可不容易,麻烦事儿多了去了。

[ 本帖最后由 bound0 于 2006-9-9 14:54 编辑 ]

使用道具 举报

帖子
40
体力
108
威望
0
居住地
天津市 南开区
发表于 2006-10-9 21:35:52 |显示全部楼层
不支持Firefox吧,我用的是Firefox 2.0 RC2。

——————————————————(bound0)
这个示例是我在IE下写的,旨在说明原理,想要支持Firefox的话需要做一些修改。

设置字号的代码在支持Firefox的编辑器上也可以应用。

[ 本帖最后由 bound0 于 2006-10-11 13:37 编辑 ]
无语...

使用道具 举报

帖子
27
体力
71
威望
0
发表于 2006-12-5 10:14:53 |显示全部楼层
好东西.谢谢了!

使用道具 举报

mahui 
帖子
40
体力
88
威望
0
发表于 2006-12-5 12:50:13 |显示全部楼层
新手学习中,有些还看不太明白!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-13 07:35 , Processed in 0.173469 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部