AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi IHTMLDocument2.Body.innerHTML verschluckt Tags?
Thema durchsuchen
Ansicht
Themen-Optionen

IHTMLDocument2.Body.innerHTML verschluckt Tags?

Ein Thema von Codehunter · begonnen am 10. Nov 2016
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

IHTMLDocument2.Body.innerHTML verschluckt Tags?

  Alt 10. Nov 2016, 12:30
Moin!

Ich habe ein seltsames Phänomen: Ich lade eine simple HTML-Seite in ein TWebbrowser und lese sie danach wieder aus. Beim Auslesen werden aber manche schließenden Tags entfernt.

Hier das originale HTML-Dokument:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html">
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
body,td,th {
   font-family: Geneva, Arial, Helvetica, sans-serif;
   font-size: 12px;
   color: #333333;
}
body {
  border: 1px solid #CCCCCC;
  margin: 3px;
  padding: 0px;
}
-->
</style></head>

<body style="border-style: none; overflow: hidden;" onContextmenu="return false">
  <UL>
    <LI>Foo</LI>
    <LI>Bar</LI>
    <LI>Baz</LI>
  </UL>
</body>
</html>
Die kleine Liste ist entscheidend:
Code:
  <UL>
    <LI>Foo</LI>
    <LI>Bar</LI>
    <LI>Baz</LI>
  </UL>
Sie wird beim Auslesen aus IHTMLDocument2.Body.innerHTML so ausgegeben:
Code:
  <UL>
    <LI>Foo
    <LI>Bar
    <LI>Baz
  </UL>
Hatte schon mal jemand ein ähnliches Problem? Das ergibt am Ende nur Tagsalat, aber kein valides HTML. Selbst Tidy scheitert daran, weil sich daraus jetzt theoretisch verschachtelte ListItems (LI) ergeben, die von Tidy verschachtelt geschlossen würden:
Code:
  <UL>
    <LI>Foo<
    <LI>Bar
    <LI>Baz</LI></LI></LI>
  </UL>

EDIT: Ich seh grade, das Problem ist nicht neu und anscheinend auch nicht originär bei Delphi zu suchen: Link

EDIT 2: Das Problem löst sich auf wundersame Weise von selbst, nachdem der Rechner einmal neu gestartet wurde. Also definitiv kein Problem an meiner Implementierung. Ich habe den Verdacht, dass der IE eine Menge (GDI-) Resourcen konsumiert und nicht mehr ordentlich frei gibt. Meine Anwendung hat laut FastMM4 keine Memleaks. Jedoch tritt besagter Fehler mehr oder weniger reproduzierbar auf, wenn man das Fenster mit dem TWebbrowser viele Male nacheinander öffnet und schließt. Eine exakte Anzahl lässt sich aber nicht ermitteln.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (11. Nov 2016 um 11:19 Uhr)
  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 10:40 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