Hallo!
Ich habe ein
HTML-Dokument wie dieses:
Code:
<!DOCTYPE
html>
<
html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Test</title>
<link href="dark.css" rel="stylesheet" type="text/css"/>
<link href="light.css" rel="stylesheet" type="text/css"/>
<style>
body {
border: none;
margin: 0;
padding: 0;
}
</style>
</head>
<body class="dark">
Test
</body>
</
html>
Wie man sieht wird dem <body>-Tag direkt eine Klasse "dark" zugewiesen. Hier noch die beiden CSS-Dateien:
Code:
body.dark {
color: #ffffff;
background-color: #000000;
}
Code:
body.light {
color: #000000;
background-color: #ffffff;
}
(Das ist nur das Grundgerüst, deshalb wirkt das so banal)
Nun möchte ich zur Laufzeit das Body-Element holen und das Attribut "class" auf den Wert "light" ändern. Allerdings komme ich damit nicht so recht weiter:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Es: IHTMLElementCollection;
E: IHTMLElement;
Doc: IHtmlDocument3;
begin
Webbrowser.Document.QueryInterface(IHtmlDocument3, Doc);
Assert(Doc <> NIL);
E:= (Webbrowser.Document AS IHTMLDocument2).body;
if E <> NIL then begin
E.setAttribute('className', 'light', EmptyParam);
end;
end;
Die Variable E bleibt immer NIL (und ja, ReadyState passt, das Dokument ist fertig geladen). Hat jemand einen Tip wo ich den Fehler mache? Mit MSHTML-
DOM habe ich eher selten zu tun...
Grüße
Cody