3 Stimmen

IHTMLDokumente 1, 2, 3 und 4 verwenden

In meinem aktuellen Projekt verwende ich einen Webbrowser, den ich derzeit im Entwurfsmodus verwende, um ihn bearbeitbar zu machen usw. Der Code, den ich derzeit verwende, ist:

WebBrowser.Document.DomDocument as IHTMLDocument2

Was ist eigentlich ein IHTMLDocument2, 3 oder 4? Ich habe auch festgestellt, dass bei der Identifizierung eines aktuellen Auswahlbereichs im Dokument die Methode range.text.replace nicht auf die gleiche Weise funktioniert wie string.replace.

Kann mir bitte jemand die grundlegende Funktionalität von IHTMLDocuments und IHTMLTxtRange erklären?

2voto

Chad Grant Punkte 41992

IHTMLDocument ist eine Schnittstelle, bei der es sich im Wesentlichen um einen "unbrechbaren" Vertrag handelt, der darstellt, was das Objekt, das sie implementiert, bereitstellen wird.

Eine Änderung der Schnittstelle beim Wechsel zu einer neuen Version des Codes würde diesen Vertrag brechen und damit auch den Code, der sich auf diesen Vertrag stützt.

Angenommen, Sie erstellen :

public interface IMyInterface {
      public int Property1 { get;  set; }
}

Ein Jahr später müssen Sie Property2 hinzufügen, aber Sie können Ihre Schnittstelle nicht ändern. Eine Möglichkeit, das zu umgehen, ist die Erstellung von:

public interface IMyInterface2 {
    public int Property2 { get;set; }
} 

und dann mit Ihrer alten Klasse, die IMyInterface implementiert:

public class MyObject : IMyInterface, IMyInterface2 {
    public int Property1 { get {} set {} }
    public int Property2 { get {} set {} }
}

Dann brechen Sie nicht den älteren Vertrag, sondern können die neue Schnittstelle in Code wie z.B.:

if (obj is IMyInterface) {
   Console.WriteLine(((IMyInterface)obj).Property1);

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

Und genau das hat Microsoft getan. Die mshtml-Bibliothek, in der IHTMLDocument enthalten ist, ist eine COM-Bibliothek, und COM ist stark auf Schnittstellen angewiesen. Als sich die Bibliothek also weiterentwickelte, fügte Microsoft mehr und mehr Schnittstellen hinzu, um neuere Funktionen/Code freizulegen.

IHTMLTxtRange ist eine Schnittstelle für die am häufigsten verwendete TextRange Objekt. Es stellt eine Reihe von Funktionen zum Parsen von Text-"Fragmenten" oder "Bereichen" zur Verfügung.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X