![]() |
Größe einer Website
Hallo Zusammen,
das ist mein erster Beitrag, ich bitte also um Nachsicht, wenn ich Fehler machen sollte. Ich muss für eine Behinderteneinrichtung eine Prog für geistig Behinderte Menschen schreiben. Um ein Bild der gesamten Seite zu speichern benötige ich eine Möglichkeit die tatsächliche Größe (Pixel nicht Byte) einer Website zu bestimmen. Die Funktion Height :=webbrowser1.OleObject.Document.Body.ScrollHeight ; liefert bei manchen Webseiten einen richtigen Wert - bei anderen z.B. Google kommt nichts Vernünftiges. Ist es möglich die Scrollbars des Webbrowsers abzufragen (z.B. scrollbar_vertical.max) Woher weiß der Webbrowser wie groß seine Seite ist?? Für einen Tipp wäre ich sehr dankbar. Ulli |
AW: Größe einer Website
Hi,
Web ist zwar kaum mein Bereich, aber ich glaube du wirst da ziemliche Probleme haben. Meines Wissens ist es so, dass wenn man mit AJAX arbeitet der nicht sichtbare Bereich (trotz Scrollbars) noch nicht dargestellt ist. Und wenn ich mich nicht irre ist der nicht sichtbare Inhalt ebenfalls noch garnicht vorhanden. Gruß Darlo P.S.: Sollte ich mich irren bitte ich um Entschuldigung... |
AW: Größe einer Website
Es geht ja nicht um Web, sondern um ActiveX.
![]() |
AW: Größe einer Website
Hallo,
Danke für die schnellen Antworten. leider macht die beschriebene Funktion jedoch nur einen screenshot von dem momentan angezeigten Bereich (Größe des Webbrowsers) und nicht von der kompletten Website. Wenn ich den Webbrowser sehr groß zeichne (z.B. 3000 X 3000 Pixel) dann wird doch die ganze Seite geladen. Der screenshot klappt dann schon, jedoch ist dann die jpg auch 3000 X 3000 Pixel groß und der größte Bereich leer. Es muss doch irgendeine Möglichkeit geben, die richtige Größe zu ermitteln??? |
AW: Größe einer Website
Ich habe das einmal für einen Formularinhalt gemacht, indem ich die Scrollboxen Schritt für Schritt verschoben habe und die einzelnen Screens dann zu einem großen Bild zusammengesetzt habe (Quelltext habe ich nicht mehr).
Für den Webbrowser kann ich Dir leider nicht helfen. PS: Falls es auch ein externes Tool sein kann (der Hintergrund Deines Anliegens ist ja nicht genau erläutert): ![]() |
AW: Größe einer Website
Ich muss das ohne anderes Tool schaffen.
Gibt es keine Möglichkeit die Scrollbars des Webbrowsers abzufragen? Oder den Webbrowser automatisch auf die Größe der Website zu vergrößern (dann hätte ich auch schon gewonnen). Nochmal die selbe Frage: Wie erkennt der Webbrowser, wo die Grenzen der Scrollbars sind? Wenn der das erkennen kann, dann muss ich das doch auch können?!? |
AW: Größe einer Website
Zitat:
Wenn du das allerdings "nachbauen" willst, musst du dir eine komplette HTML-Rendering-Engine bauen, die genauso funcktioniert wie die des Target-Browsers, was so gut wie unmöglich ist, zumindest als Einzelperson :-) Man kann allerdings moderne Browser von aussen auch oft steuern und abfragen. Wenn du einen bestimmten Browser als Ziel hast, würde ich mal nach einer API suchen, mit der man den Browser von aussen steuern / abfragen kann und die dann in dein Programm basteln. Ansonsten könntest du evtl. noch von aussen z.b. über Plugins wie GreaseMonkey eigenen clientseitigen JS-Code einschleifen und dadurch die gerenderten Grössen abfragen. |
AW: Größe einer Website
Vielleicht hilft Dir das weiter:
![]() overflowX und overflowY oder das: ![]() |
AW: Größe einer Website
Leider hift das auch nicht, da diese Routine wieder auf
" WB.OleObject.Document.body.ScrollHeight " setzt. Dies funktioniert nur, wenn die Seite keine Frames enthält. Ich habe auch nicht die Möglichkeit ein Plug In zu installieren, da mein Prog bereits auf über 50 Rechnern läuft. Ich kann mein Prog verändern und deployen, habe aber keine Möglichkeit auf den anderen Rechner etwas zu installieren. Ich verwende den TWebbrowser von Delphi 7, auf den Rechnern ist der MS Internetexplorer (Versionen 6-9) installiert. Meine bisherige Lösung war, den Webbrowser auf besagte 3000 X 3000 Pixel zu vergrößern, Bild schießen und wider auf originalgröße zurücksetzen. Dabei "fotogaphiere" ich aber sehr viel weißes Nichts und wenig Website. Bei Seiten die mittelzentriert sind, fängt dann meine Website (auf dem jpg) nicht einmal oben links an. Also keine schöne Lösung. |
AW: Größe einer Website
Wenn es gar keine andere Möglichkeit gibt, kannst Du von dem Bitmap ggf. die Ränder anschneiden.
Sofern der Hintergrund weiß ist sollte das machbar sein. |
AW: Größe einer Website
Vielleicht klappt es ja den Webbrowser als Bild zu speichern und dann solange vergrößern und wieder als Bild speichern bis der Pixel rechts oben
nichtmehr die Farbe der Scrollbar hat. |
AW: Größe einer Website
Das Problem liegt hier generell auch noch ganz an einer anderen Stelle
: Wie definert man denn, was "der Webseiten-Inhalt" ist und wie man ihn "herausschneidet"? Meines Erachtens gar nicht: Oft ist der Hintergrund nicht weiss sondern ein Bild oder Verlauf, dann gibt es absolute und fixed Positionierung, in CSS3 auch noch mehrere Hintergrundbilder pro Block-Element. Wird schwierig, ohne das HTML und vor allem das CSS zu parsen überhaupt rauszufinden, was denn der eigentliche Inhalt ist und was man rausschneiden kann. Was soll denn das Endresultat davon eigentlich sein bzw. was sollen die Menschen dann zu sehen bekommen, nachdem abfotografiert wurde? Soll das dann exportiert und "netter" dargestellt werden? Ich kenne mich mit Barrierefreiheit bzw. der Aufbereitung für "eingeschränkte" Menschen nicht sonderlich gut aus, deswegen frage ich bzw. interessiert mich der Sinn hinter dem Ganzen. Villeicht lässt sich so auch eine alternative Lösung finden. |
AW: Größe einer Website
Ich habs. Zwar ohne Exception Handling und JPeg aber es funktioniert:
Delphi-Quellcode:
uses SHDocVW, MSHTML, ActiveX;
procedure MakeWebShot(Browser : TWebBrowser; AFileName : string); var sr : TRect; Document : IHTMLDocument2; Body : IHTMLElement2; Bitmap : TBitmap; ViewObject : IViewObject; begin Document := Browser.Document as IHTMLDocument2; Body := Document.Body as IHTMLElement2; // Der Browser darf dafür NICHT alClient sein, sonst hat es keine Auswirkung! Document.body.style.overflow := 'hidden'; sr := Rect(0, 0, Body.scrollWidth, Body.scrollHeight); Browser.Width := sr.Right; Browser.Height := sr.Bottom; Document.QueryInterface(IViewObject, ViewObject); Bitmap := TBitmap.Create; Bitmap.Width := sr.Right; Bitmap.Height := sr.Bottom; ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Application.Handle, Bitmap.Canvas.Handle, @sr, nil, nil, 0); Bitmap.SaveToFile(AFileName); Bitmap.Free; end; |
AW: Größe einer Website
|
AW: Größe einer Website
Das hatte ich schon im 3. Post angegeben, aber das funktioniert so nicht.
|
AW: Größe einer Website
Nette Funktion!
Leider funktioniert die Funktion nicht bei Seiten mit Frames. Ich habs z.B. mit der Seite "cab-b.de" probiert. Bei framelosen Seiten funktioniert's. Es hängt immer an "Body.scrollWidth" hier kommt bei Seiten mit Frames kein vernünftiger Wert heraus. |
AW: Größe einer Website
Muss man vielleicht sich langhangeln bis man das richtige Element gefunden hat. Kann doch nicht sein dass es nicht geht.
|
Dieses Thema wurde am "17. Sep 2011, 01:55 Uhr" von "Luckie" aus dem Forum "Job-Angebote" in das Forum "Netzwerke" verschoben.
|
AW: Größe einer Website
Viele Webseiten passen sich an den Browser an ... wie soll man da eine Größe bestimmen, wenn es DIE eine Größe nicht gibt?
|
AW: Größe einer Website
Naja, aber jeder grafische Browser rendert das HTML in ein Bild. Und auf das muss man doch komplett zugreifen können. Scheint aber ein allgemeines Problem -nicht nur mit IE- zu sein, denn zu dem Thema gibt es jede Menge Tipps (die alle nicht funktionieren) und jede Menge Plugins und Komponenten (die fast alle was kosten).
|
AW: Größe einer Website
Hm, ich bin schon mal froh, dass ich nicht einfach zu dumm war auf die Lösung zu kommen.
Aber wie du schon sagst, es muss doch eine Möglichkeit geben auf die Größe zu kommen!?! Der Webbrowser kommt ja auch drauf. Gibt es keien Trick wie ich die Scrollbalken-'länge' abfragen kann? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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