Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Quellcode aus TWebBrowser (https://www.delphipraxis.net/171230-quellcode-aus-twebbrowser.html)

-remit- 27. Okt 2012 09:58

Quellcode aus TWebBrowser
 
Ich habe beim Programmieren festgestellt, dass die TWebbrowser Komponente 3 unterschiedliche Quelltexte liefert:
1. WebBrowser1.OleObject.Document.documentElement.out erhtml;
2. WebBrowser1.OleObject.Document.documentElement.inn erhtml;
3. Rechtsklick auf Webbrowser und dann "Quellcode anzeigen"

Quelltext 1 und 2 beinhalten noch verlinkte CSS-Datein und vollen (unausgeführten) Java-Script und sind doppelt so lang wie Quelltext 3, der die Website so darstellt, dass Javascript ausgeführt wurde. Ich benötige den 3. Quelltext-Typen. Welchen Befehl benötige ich um auf diesen zuzugreifen? Ich habe bis jetzt nur viel zu Punkt 1 und 2 gelesen.

Bernhard Geyer 27. Okt 2012 10:15

AW: Quellcode aus TWebBrowser
 
Würde mich auch interessieren.
Aber ob MS das vorgesehen hat? Habe schon haarsträubende Erfahrungen mit der COM-Schnittstelle vom IE-Control gemacht ...

-remit- 27. Okt 2012 12:03

AW: Quellcode aus TWebBrowser
 
MS muss es vorgesehen haben, wie sonst wird der 3. Quellcode generiert? Wie kann man auf das Rechtsklick- Menü zugreifen, bzw. auf die Schaltfläche "Quellcode anzeigen"? Dies wäre zwar ein wenig Aufwand sollte doch aber möglich sein.

Edit:
Welche weitere Möglichkeit gäbe es mit Delphibordmitteln folgendes zu tun:
- eine Website aufrufen (Indy)
- 2 HTML-Forms ausfüllen (Indy)
- JavaScriptbutton betätigen (kein Indy :()
- angezeigtes HTML auswerten (Indy)

Andreas L. 27. Okt 2012 12:12

AW: Quellcode aus TWebBrowser
 
Zitat:

Zitat von -remit- (Beitrag 1188617)
- JavaScriptbutton betätigen (kein Indy :()

Vielleicht kannst du den JavaScript-Code nach Delphi portieren. Dann lässt sich alles mit Indy umsetzen.

-remit- 27. Okt 2012 12:20

AW: Quellcode aus TWebBrowser
 
Über den Javascriptbutton werden Daten aus einer Datenbank der Website abgerufen, geht das dann auch noch mit Indy?

Andreas L. 27. Okt 2012 12:28

AW: Quellcode aus TWebBrowser
 
Zitat:

Zitat von -remit- (Beitrag 1188621)
Über den Javascriptbutton werden Daten aus einer Datenbank der Website abgerufen, geht das dann auch noch mit Indy?

Um das zu beantworten müssten wir den JS-Code sehen.

-remit- 27. Okt 2012 12:42

AW: Quellcode aus TWebBrowser
 
Das müsste die function sein, welche durch den Button aufgerufen wird:
Code:
function edVereinsspielplan()
{
  $("edLegendeSwitch").style.borderTop="1px solid #8D8D8D";
  $("edVspielplanOut").innerHTML="Einen Moment bitte. Der Spielplan wird geladen.";
  $("edWarten").style.visibility="visible";
  new Ajax.Updater("edVspielplanOut","/api/fbed/fbedVereinsspielplan.php",
    {evalScripts:true,asynchronous:true,method:"post",parameters:
    {edMandant:edMandant,
    edVereinId:edVereinId,
    edDatumVon:$F("edDatumVon"),
    edDatumBis:$F("edDatumBis"),
    edMannschaftChk0:$F("edMannschaftChk0"),
    edMannschaftChk1:$F("edMannschaftChk1"),
    edMannschaften:Object.toJSON(edMannschaften),
    edAustragungsort0:$F("edAustragungsort0"),
    edAustragungsort1:$F("edAustragungsort1"),
    edAustragungsort2:$F("edAustragungsort2"),
    edSpielstaette:$F("edSpielstaette")
}

Andreas L. 27. Okt 2012 13:03

AW: Quellcode aus TWebBrowser
 
Du kannst das in Delphi umsetzen. Mit TIdHTTP einfach einen POST an /api/fbed/fbedVereinsspielplan.php senden. Die Parameter aus dem JS-Code musst du auch mitgeben. Allerdings musst du erstmal herausfinden wo im JS die Variablen befüllt werden bzw. was deren Inhalt ist.

Parameter:
Code:
edMandant:edMandant,
    edVereinId:edVereinId,
    edDatumVon:$F("edDatumVon"),
    edDatumBis:$F("edDatumBis"),
    edMannschaftChk0:$F("edMannschaftChk0"),
    edMannschaftChk1:$F("edMannschaftChk1"),
    edMannschaften:Object.toJSON(edMannschaften),
    edAustragungsort0:$F("edAustragungsort0"),
    edAustragungsort1:$F("edAustragungsort1"),
    edAustragungsort2:$F("edAustragungsort2"),
    edSpielstaette:$F("edSpielstaette")
EDIT: Welche Parameter genau vom Script übergeben werden kannst du mit z. B. Firebug ziemlich einfach rausfinden.

Bernhard Geyer 27. Okt 2012 13:24

AW: Quellcode aus TWebBrowser
 
Zitat:

Zitat von -remit- (Beitrag 1188617)
MS muss es vorgesehen haben, wie sonst wird der 3. Quellcode generiert?

Über eine Browser-Internes Interface über das nicht externen Zugriff möglich?
Evtl. man die IE-Schnittstelle des IE8 einlesen. Evtl. gibts ja Properties die man im TWebBroser (Müsste IE3-Schnittstelle sein) noch nicht zur Verfügung steht.

-remit- 27. Okt 2012 13:39

AW: Quellcode aus TWebBrowser
 
Danke Andreas, dieser Workaround über den TWebBrowser stört mich schon die ganze Zeit (Bilder die ich nicht brauche werden geladen, nicht plattformunabhängig, Fehler im Javascript beim Ausführen, will manchmal Adobe Flash Player herunterladen usw.). Das Analysieren von Website habe ich noch nicht gemacht, da werde ich mich gleich ransetzen, dazu eine Verständnisfrage bzw. zur "neuen" Funktionsweise meines Programms:
Anstelle der Homepage, die mir den kompletten Inhalt mit Bannern, Werbung etc. auswirft, gehe ich mittels direktem Zugriff auf die php-Datei: htmlcode:=HttpLoader.Get('http://www.meineurl.de/fbedVereinsspielplan.php?edDatumVon=10.10.2012') und erhalte unter umständen kein html-code zurück?

Danke Bernhard für Dein Feedback, die TWebBrowser Komponente ist leider nicht sehr ausgereift. Wenn mein Vorhaben allein mit Indy funktioniert werde ich es darüber ausprobieren.
Vielleicht fällt trozdem jemandem ein, wie man die Schaltfläche "Quellcode anzeigen" ansteuern kann.

lg
Max


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 Uhr.
Seite 1 von 2  1 2      

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