簡體   English   中英

使用IHTMLDocuments 1,2,3和4

[英]Using IHTMLDocuments 1, 2, 3 & 4

我在當前項目中使用Web瀏覽器,目前我在設計模式下使用它以使其可編輯等。我目前使用的代碼是:

WebBrowser.Document.DomDocument as IHTMLDocument2

究竟什么是IHTMLDocument2,3或4? 我還發現,在識別文檔中的當前選擇范圍時,range.text.replace方法的工作方式與string.replace的工作方式不同。

任何人都可以向我解釋IHTMLDocuments和IHTMLTxtRange的基本功能嗎?

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主要依賴於接口。 因此,隨着庫的發展,Microsoft添加了越來越多的接口來公開更新的功能/代碼。

IHTMLTxtRange是更常用的TextRange對象的接口。 它公開了一堆用於解析文本“Fragments”或“Ranges”的功能。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM