Laden...

Webbrowser Control basierend auf Firefox?

Erstellt von Mazo vor 15 Jahren Letzter Beitrag vor 15 Jahren 9.712 Views
M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 15 Jahren
Webbrowser Control basierend auf Firefox?

Hallo,
kennt ihr ein Webbrowser Control (für WPF), was den Firefox Browser als grundlage nutzt und nicht den IE?
Vorallem hinsichtlich welche Cookies genutzt werden.

Gruß MAzo

M
221 Beiträge seit 2008
vor 15 Jahren

Habs sowas auch noch nie gemacht, aber finde es interessant!

Schau die das hier mal an, da hat einer das umgesetzt, was du auch willst, und den SourceCode gibts zum downloaden 🙂

http://www.bengoodger.com/work-resources/secretprojects/manticore/

M
Mazo Themenstarter:in
255 Beiträge seit 2006
vor 15 Jahren

scheint recht umfangreich =)
Danke für dein Tip

H
5 Beiträge seit 2008
vor 15 Jahren

Unter geckofx.org findet man einen Wrapper für Firefox, sodass man den Firefox wie ein UserControl einbetten kann.

GeckoFX is an open-source component which makes it easy to embed Mozilla Gecko (Firefox) into any .NET Windows Forms application. Written in clean, fully commented C#, GeckoFX is the perfect replacement for the default Internet Explorer-based WebBrowser control.

Beispielcode für WindowsForms und WPF gibt es hier:
http://lecker-kanzlei.spaces.live.com/blog/cns!95AD8F56A7634D11!171.entry

HL

A
37 Beiträge seit 2009
vor 15 Jahren

ähm ich hab da ne frage dazu
mit dem navigate kann man url's ansurfen, ok soweit so klar...
aber wie kann ich den firefox dazu bringen, dass er mir eine html-seite anzeigt
die sich in einer string-variable befindet?

beste grüße

I'll fight till the hell starts frezzing and than I'll fight on ice...

<<Der Geist in deiner CPU.... ist mein Programm>>

H
5 Beiträge seit 2008
vor 15 Jahren

Eine einfach Lösung gibt es dafür leider nicht!

Dieser Ansatz funktioniert nämlich nicht:
Document.DocumentElement.InnerHtml = "<html><head></head><body>Test</body></html>";

Also bleiben nur die Wege über das Laden einer temporäre Datei oder die Verwendung eines miniWebServers in der Anwendung.

HL

A
37 Beiträge seit 2009
vor 15 Jahren

wie? hab ich dich da grade richtig verstanden?
ich brauch nen mini-webserver um daten die sich schon im ram befinden in
das geckofx-plugin zu laden?
ja das hab ich leider auch schon bitter erfahren dass es so nicht funkt....
mein problem ist das die anwendung sehr performant bleiben soll und der IE mir zu
langsam rendert, darum kam ich auf die geckofx-idee.
aber wenn ich die files auf der platte zwischenspeicher dann wirds erst recht wieder
langsamer - hm... sieht nach einem kleinen dilemma aus

tut für die mini-webserver-idee würd mich aber denoch interessieren!

beste grüße

I'll fight till the hell starts frezzing and than I'll fight on ice...

<<Der Geist in deiner CPU.... ist mein Programm>>

1.346 Beiträge seit 2008
vor 15 Jahren

Kleiner Webserver

den müsstest du anpassen, so, das er die daten aus dem Ram versendet. ob das aber performant ist. kp. Ich glaub nicht dran.

Gruß pdelvo

H
5 Beiträge seit 2008
vor 15 Jahren

Du könntest folgenden Servercode verwenden und einen HttpListener für Deine Zwecke implementieren.

http://webserver.codeplex.com/

In Tutorial1 ist die Implementierung für einen solchen HttpListener geschildert.

Aber mein Einschätzung ist, dass dieser Lösungsweg nochmal ein Stück Rechenleistung kostet und ein Geschwindigkeitsvorteil im Vergleich zum Lösungsweg über den IE fragwürdig ist.

HL

A
37 Beiträge seit 2009
vor 15 Jahren

ich hoff die antwort kommt jetzt nicht 5x wegen meiner schlechten verbindung....
thx für die beiden tuts - mit der performance dürfts ihr auch recht haben 🙁
aber ich verstehs nicht wie man ein solche plugin erstellt und dann kann man
nicht mal direkt reinschreiben.... naja vl. kommt da noch was
sieht so aus als müsst ich mich weiterhin mit dem IE ärgern^^

beste grüße

EDIT: leute dass scheint doch zu funktionieren einen string in den geckoFX zu
schreiben


geckoFX.Document.DocumentElement.InnerHtml = htmlString;

komischerweise geht das mit dem form_load nicht
aber mit einem event wie z.b tabIndexChange oder buttonClick und dann ne funktion
aufruft, die den InnerHtml-Teil ändert, funktionierts.... aber warum 🤔

I'll fight till the hell starts frezzing and than I'll fight on ice...

<<Der Geist in deiner CPU.... ist mein Programm>>

H
5 Beiträge seit 2008
vor 15 Jahren

Man kann übrigens auch der Navigate-Methode einen String übergeben.

Ein Aufruf von Navigate könnte dann so aussehen:

tBrowser.Navigate("data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E");

Eine kurze Erläuterung zum "data URL schema" findet man unter folgendem Link:
https://developer.mozilla.org/en/The_data_URL_scheme

HL

H
5 Beiträge seit 2008
vor 15 Jahren

Hier noch eine kleine Ergäzung:

        string tContent = &quot;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Test&lt;/body&gt;&lt;/html&gt;&quot;;  
        System.Uri tUri = new Uri(&quot;data:text/html,&quot;+tContent);  
        tBrowser.Navigate(tUri.AbsoluteUri);  

Dieser Code läuft auch im Forms-Load-Event.

HL

A
37 Beiträge seit 2009
vor 15 Jahren

tolle idee funktioniert auch ganz gut nur mit einer einschränkung....
kann das sein das er dann eine andere codierung verwendet?
weil so tolle zeichenkombinationen statt ö/ä/ü usw. auftauchen

auch wirft er mir teilweise exceptions das die url zu lange ist...

EDIT: nunja wegen der zu langen url wollt ich's base64 probieren
(steht was davon auf der geckofx page http://geckofx.org/viewtopic.php?id=536)
nur dann zeigt er mit html code an, anstatt der gerenderten html-seite


System.Uri turi = new Uri("data:text/plain;base64," + htmlINbase64);
gFirefox.Navigate(turi.AbsoluteUri);

was mach ich nu shon wieder falsch

beste grüße

I'll fight till the hell starts frezzing and than I'll fight on ice...

<<Der Geist in deiner CPU.... ist mein Programm>>