作者Aurim (Who cares?)
看板C_Sharp
标题Re: 实作HTML Editor的问题
时间Sat Aug 13 15:35:42 2005
※ 引述《ganymade (呀)》之铭言:
: 使用者可以指定一些我建立好的HTML语法
: 指定放到2号那个<td></td>里
: 但问题是,要如果去找到是哪一<td>区块?
我不是很明白你想要有怎样子的视觉效果,所以试着揣摩提出一个解法。
在说明解法之前,先说明一下我对利用MSHTML.DLL开发出来的HTML editor的认知。
以MSHTML开发出来的HTML editor,基本上都可以视为是一个WebBrowser control,
只是这个WebBrowser control内的IHTMLDocument2介面的designMode property被设
为"On",所以里头的那份文件可以被视觉化编辑,里头的javascript/vbscript都不
会被执行。我利用这个行为让自己的RSS news reader显示出RSS item description
及ATOM entry content而不会跑里头的script;这些栏位内常常会有跑不起来而出现
javascript error的东西,也容易被恶意插入奇怪的script code,利用WebBrowser
control来显示这些栏位时,最好设为禁止执行里头的script。
在这样的HTML editor内,也不是所有东西都一定可以被编辑、更动的。如果一个
HTML tag的contentEditable attribute被设为"false",在它范围内的tag就是不
可以被修改、删除的,除非它范围内的tag的contentEditable attribute有另外
注明为"true"。我用这个行为,让上段显示在HTML editor (也就是HTML文件设为
design mode的WebBrowser control) 内的HTML既不会执行任何javascript,也不
会变成使用者可以去修改的状态。
要解决你的需求,你的HTML editor可以载入预先设计好的HTML文件,这文件内只
有必须让使用者编辑的部份才是设为contentEditable="true"的。如此一来,要
插入新元件,也只能插到你允许使用者修改的区域内。
如果一个画面只想让使用者能动单一个<td>...</td>内的东西,你可能需要设计
几页类似Wizard的页面来分开编辑不同区块。
如果你想个别取出使用者编辑的东西,而省略掉你提供给使用者的HTML版面,
最不需要技术的方法就是在可编辑范围前後加上可以唯一识别的注解或属性值;
最具弹性又不用改code的方法,则是找个DOM parser for HTML,把HTML给parse
成XML DOM物件,用XPath来唯一定位这些使用者编辑的东西,这样也可以很方便
对使用者输入的内容加以过滤检查或加工处理。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.222.17.194
1F:推 ganymade:谢谢你 大概了解了 140.119.201.73 08/13