我正在使用 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>
在第二个之后。
我究竟做错了什么?我错过了什么吗?