Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi IHTMLDocument2.Body.innerHTML verschluckt Tags? (https://www.delphipraxis.net/190813-ihtmldocument2-body-innerhtml-verschluckt-tags.html)

Codehunter 10. Nov 2016 11:30

IHTMLDocument2.Body.innerHTML verschluckt Tags?
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 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