我正在使用Microsoft的mshtml编写一个简单的HTML WYSIWYG编辑器。功能之一应该是为所选文本选择标题类型(例如h1,h2,h3)。使用以下代码,第一次分配是没有问题的:

// *doc* is my IHTMLDocument
// *tag* contains the header tag

IHTMLTxtRange range = (IHTMLTxtRange)doc.selection.createRange()
string rangeText = range.text;
IHTMLElement elem = doc.createElement(tag)
elem.innerHTML = rangeText;
range.pasteHTML(elem.outerHTML);


当我尝试更改标头时,尽管MSDN说到pasteHTML,旧的标头并没有被替换:


  将HTML文本粘贴到给定的文本中
  范围,替换之前的任何文字和
  范围内的HTML元素。


这意味着如果我的HTML是

<H1>foo</H1>


第一次分配后,

<H1>
<H2>asdasd</H2></H1>


在第二次之后。

我究竟做错了什么?我想念什么吗?

最佳答案

您是否尝试过将最后一行更改为

range.pasteHTML(elem.innerHTML);



 我认为outsideHTML将包含原始的h1标签,然后您将粘贴

<H1><H2>asdasd</H2></H1>


过度

<H1>foo</H1>

关于c# - IHTMLTxtRange.pasteHTML不会替换旧的HTML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1328378/

10-11 22:54