AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [TWebBrowser] Alle StyleSheets auflisten
Thema durchsuchen
Ansicht
Themen-Optionen

[TWebBrowser] Alle StyleSheets auflisten

Ein Thema von Daniel G · begonnen am 8. Aug 2006 · letzter Beitrag vom 9. Aug 2006
Antwort Antwort
Daniel G
(Gast)

n/a Beiträge
 
#1

[TWebBrowser] Alle StyleSheets auflisten

  Alt 8. Aug 2006, 19:55
Hilfe.

Ich enumeriere mit einem Codeschnipsel, den marabu mal geposted hat, alle StyleSheets in einem Dokument:

Delphi-Quellcode:
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;
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.

Beispiel:

HTML - Syntax:
Code:
<link rel="stylesheet" href="./templates/DPClassicBlue/DPClassicBlue.css" type="text/css">
Rückgabewert:
'./templates/DPClassicBlue/DPClassicBlue.css'
CSS - Syntax
Code:
<style type="text/css"> @import url("./formIE.css"); </style
Rückgabewert
''
Es werden aber zwei definierte StyleSheets erkannt. Kennt jemand ein Workaround dafür?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 8. Aug 2006, 19:58
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#3

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 8. Aug 2006, 20:04
Zitat von Bernhard Geyer:
Ich ja auch klar wenn du den Namen des Interfaces betrachtest: IHTMLStylesheetsCollection
Ja gut, wenn das der einzige Weg ist...

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...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 9. Aug 2006, 19:54
Das ist der IE. Schon mal versucht Word-HTML per IHTMLDocument2 zu analysieren?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#5

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 9. Aug 2006, 20:11
Ähh.... nein? Aber lass mich raten: Ein einziges Chaos?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 9. Aug 2006, 20:16
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 9. Aug 2006, 20:48
Hallo Daniel,

Zitat von Daniel G:
Für mich ist es wichtig, dass ich alle Stylesheets bekomme, ...
probiere es so:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#8

Re: [TWebBrowser] Alle StyleSheets auflisten

  Alt 9. Aug 2006, 21:09
Funktioniert wunderbar. Danke dir
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz