![]() |
[TWebBrowser] Alle StyleSheets auflisten
Hilfe. :mrgreen:
Ich enumeriere mit einem Codeschnipsel, den marabu mal geposted hat, alle StyleSheets in einem Dokument:
Delphi-Quellcode:
Für mich ist es wichtig, dass ich alle Stylesheets bekomme, da ich diese durch eigene, lokale ersetzen muss. Nun habe ich das Problem, dass mir der Code alle StyleSheets listet, allerdings nur bei denen die Adresse zurückgibt, die via HTML - Syntax eingebunden werden. Bei CSS - Syntax klappt das nicht.
procedure SetSpecialCSS(WB: TWebBrowser);
var doc: IHTMLDocument2; cStyles: IHTMLStylesheetsCollection; i: integer; ss, vi: OleVariant; begin doc := WB.Document as IHTMLDocument2; cStyles := doc.styleSheets; // no cast necessary //Enumerate all StyleSheets for i := 0 to cStyles.length - 1 do begin vi := i; ss := cStyles.item(vi); // no cast possible ShowMessage(ss.href); end; end; Beispiel: HTML - Syntax:
Code:
Rückgabewert:
<link rel="stylesheet" href="./templates/DPClassicBlue/DPClassicBlue.css" type="text/css">
Delphi-Quellcode:
'./templates/DPClassicBlue/DPClassicBlue.css'
CSS - Syntax
Code:
Rückgabewert
<style type="text/css"> @import url("./formIE.css"); </style
Delphi-Quellcode:
''
Es werden aber zwei definierte StyleSheets erkannt. Kennt jemand ein Workaround dafür? |
Re: [TWebBrowser] Alle StyleSheets auflisten
Ich ja auch klar wenn du den Namen des Interfaces betrachtest: IHTMLStylesheetsCollection :-)
Du könntest versuchen über das IHTMLDocument2-Interface dir alle style-Elemente geben zu lassen und diese selbst zu analysieren. |
Re: [TWebBrowser] Alle StyleSheets auflisten
Zitat:
Aber ich finde es trotzdem merkwürdig, dass dann die Existenz beider StyleSheets trotz unterschiedlicher Syntax erkannt wird, gerade weil es sich um IHTMLStylesheetsCollection handelt... :gruebel: |
Re: [TWebBrowser] Alle StyleSheets auflisten
Das ist der IE. Schon mal versucht Word-HTML per IHTMLDocument2 zu analysieren?
|
Re: [TWebBrowser] Alle StyleSheets auflisten
Ähh.... nein? Aber lass mich raten: Ein einziges Chaos?
|
Re: [TWebBrowser] Alle StyleSheets auflisten
Bilder wurden zwar angezeigt aber per DOM nicht gefunden. Lag daran das Word-HTML so ziemlich jeden W3C-standard verletzt um möglichst nur vom IE darstellbar zu sein.
|
Re: [TWebBrowser] Alle StyleSheets auflisten
Hallo Daniel,
Zitat:
Delphi-Quellcode:
Grüße vom marabu
procedure ExtractStyleSheets(sc: IHTMLStyleSheetsCollection; s: TStrings);
var i: Integer; v: OleVariant; u: iUnknown; ss: IHTMLStyleSheet; begin with sc do for i := 0 to Pred(length) do begin v := i; u := item(v); if Succeeded(u.QueryInterface(IID_IHTMLStyleSheet, ss)) then if ss.href = '' then ExtractStyleSheets(ss.imports, s) else s.Add(ss.href); end; end; |
Re: [TWebBrowser] Alle StyleSheets auflisten
Funktioniert wunderbar. Danke dir :love:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz