2011-05-30 111 views
1

我正在使用IHTMLTxtRange对象实例替换当前用户在浏览器中的选择。如何用IHTMLTxtRange实现文本替换?

今天,我遇到了以下问题。这是我的标记:

<body><p><a href="http://www.google.com">http://www.google.com</a></p></body> 

用户选择(HTML),由IHMLTxtRange情况通报(范围),是:

<a href="http://www.google.com">http://www.google.com</a> 

每当我执行range.replaceHTML("test");结果是:

<body><p><a href="http://www.google.com">test</a></p></body> 

此行为似乎也适用于如下情况:

<body><p><b>some text</b></p></body> 

任何人都可以帮助我制定一致的选择替换策略吗?我的意思是,文本选择按预期工作。

感谢


更新10/05/2012:澄清经验问题

反观现在我认识到这个问题没有正确explicited。我期望用test替换整个字符串<a href="http://www.google.com">http://www.google.com</a>。取而代之的是锚的innerText被替换,留下标记不变。

回答

1

解决方案审查

最后,我找到了答案,这一个通过Internet Explorer Extension Development论坛。

请注意,从the answer I received开始,在IHTMLTxtRange对象上使用pasteHTML方法时,似乎也会出现此问题。甚至有一个closed issue在Microsoft Connect网站中描述此问题。

解决方法

我解决了这一问题,根据我得到的,通过检查范围当前元素是锚答案:如果是这样的话,当前元素的父元素被删除并将所需的文本插入其位置。

我不得不做这个检查也为造型元素:<B>,<I><FONT>标签。

一定要检查我得到答案的问题了解更多信息。