使用IHTMLDocuments 1、2、3和4

3

我正在我的当前项目中使用一个Web浏览器,并且目前我正在使用它的设计模式使其可编辑等。 我目前正在使用的代码是:

WebBrowser.Document.DomDocument as IHTMLDocument2

什么是IHTMLDocument2、3或4?我还发现,在确定文档中的当前选择范围时,range.text.replace方法不能像字符串替换一样工作。

可以有人解释一下IHTMLDocuments和IHTMLTxtRange的基本功能吗?

1个回答

2
IHTMLDocument是一个接口,本质上是一个“不可破坏”的合约,代表着实现它的对象将提供什么。当移动到新版本的代码时更改接口会破坏这个合约,并进而破坏依赖于该合约的代码。假设您创建了:
public interface IMyInterface {
      public int Property1 { get;  set; }
}

一年后,您需要添加Property2,但不能更改您的接口。因此,解决这个问题的一种方法是创建:
public interface IMyInterface2 {
    public int Property2 { get;set; }
} 

然后使用实现了IMyInterface接口的旧类:
public class MyObject : IMyInterface, IMyInterface2 {
    public int Property1 { get {} set {} }
    public int Property2 { get {} set {} }
}

那么,您不会违反旧合同,而是可以在代码中使用新的接口,例如:
if (obj is IMyInterface) {
   Console.WriteLine(((IMyInterface)obj).Property1);

   if (obj is IMyInterface2) {
      //more
   }
}

那么微软就是这样做的。IHTMLDocument所在的mshtml库是一个COM库,而COM在很大程度上依赖于接口。因此,随着库的发展,微软添加了越来越多的接口以公开较新的功能/代码。
IHTMLTxtRange是更常用的TextRange对象的接口。它公开了一堆解析文本"片段"或"范围"的功能。

http://www.webreference.com/js/column12/trmethods.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接