Czy jest jakiś stosunkowo łatwy sposób na wstawienie nowoczesnej przeglądarki do aplikacji .NET?
O ile rozumiem, WebBrowser
kontrola jest opakowaniem dla IE , co nie stanowiłoby problemu, poza tym, że wygląda na to, że jest to bardzo stara wersja IE , ze wszystkim, co pociąga za sobą błędy w CSS, potencjalne zagrożenia bezpieczeństwa (jeśli silnik renderowania nie został załatany, czy naprawdę mogę oczekiwać, że problemy z przepełnieniem bufora zillion zostaną naprawione?) i inne problemy.
Korzystam z programu Visual Studio C # (edycja ekspresowa - czy ma to tutaj znaczenie?)
Chciałbym zintegrować dobrą aplikację internetową z moimi aplikacjami. W niektórych po prostu używam go do obsługi procesu rejestracji użytkownika, interfejsu z niektórymi funkcjami mojej witryny i innymi rzeczami tego zamówienia, ale mam na myśli inną aplikację, która będzie wymagała więcej kontroli ...
Potrzebuję:
- Przeglądarka, którą można zintegrować w oknie mojej aplikacji (nie w osobnym oknie)
- Dobre wsparcie dla CSS, js i innych technologii internetowych, na równi z każdą nowoczesną przeglądarką
- Podstawowe funkcje przeglądarki, takie jak „nawiguj”, „wstecz”, „przeładuj” ...
- Liberalny dostęp do kodu strony i wyników.
Myślałem o Chrome, ponieważ jest objęty licencją BSD, ale byłbym równie zadowolony z najnowszej wersji IE.
W miarę możliwości chciałbym, aby sprawy były proste. Najlepiej byłoby, gdyby można było załatać istniejącą WebBrowser
kontrolę, która robi już około 70% tego, czego potrzebuję, ale nie sądzę, żeby to było możliwe.
Znalazłem formant ActiveX dla Mozilli ( http://www.iol.ie/~locka/mozilla/control.htm ), ale wygląda na to, że jest to stara wersja, więc niekoniecznie jest to poprawa.
Jestem otwarty na sugestie
źródło
WebBrowser
kontrolka hostowana korzysta z emulacji IE7, chyba że zalecono inaczejFEATURE_BROWSER_EMULATION
. Jest to udokumentowane tutaj: blogs.msdn.com/b/askie/archive/2009/03/23/…Odpowiedzi:
Checkout Wiązania CefSharp .Net , projekt, który rozpocząłem jakiś czas temu, który na szczęście został przyjęty przez społeczność i zamienił się w coś wspaniałego.
Projekt obejmuje Chromium Embedded Framework i był wykorzystywany w wielu dużych projektach, w tym w kliencie Rdio dla systemu Windows, Facebook Messenger dla Windows i Github dla Windows.
Zawiera kontrolki przeglądarki dla WPF i Winforms oraz mnóstwo funkcji i punktów rozszerzeń. Opierając się na Chromium, jest również niesamowicie szybki.
Weź go z NuGet:
Install-Package CefSharp.Wpf
lubInstall-Package CefSharp.WinForms
Sprawdź przykłady i podziel się swoimi przemyśleniami / opiniami / prośbami: https://github.com/cefsharp/CefSharp
BSD na licencji
źródło
Chrome nie używa (widelca) pakietu Webkit, jeśli jeszcze tego nie wiesz, z którego korzysta także Safari. Oto kilka pytań o tym samym charakterze:
Webkit nie jest świetny, jak mówi druga odpowiedź, jedna wersja nie działa (kod Google), a Mono jest eksperymentalna. Byłoby miło, gdyby ktoś dołożył starań, aby zrobić dla niego przyzwoite opakowanie .NET, ale wydaje się, że nikt nie chce tego robić - co jest zaskakujące, biorąc pod uwagę, że teraz obsługuje HTML5 i wiele innych funkcji, które IE (8) ) brakuje silnika.
Aktualizacja (2014)
Jest nowy podwójnie licencjonowany projekt, który pozwala osadzać Chrome w aplikacjach .NET o nazwie Awesomium . Jest wyposażony w interfejs API .NET, ale do renderowania wymaga sporo hacków (przykłady przyciągają okno przeglądarki do bufora, malują bufor jako obraz i odświeżają na zegarze).
Myślę, że jest to przeglądarka używana przez Origin w Battlefield 3.
Aktualizacja (2016)
Jest teraz DotnetBrowser , komercyjna alternatywa dla Awesomium. Opiera się na chromie.
źródło
Testuję alternatywy dla komponentu przeglądarki C # od kilku dni i oto moja lista:
1. Korzystanie z nowszych wersji IE 8,9:
Komponent przeglądarki internetowej to IE7 nie IE8? Jak to zmienić?
Plusy:
Cons:
Nie wymaga to wiele pracy i można uzyskać obsługę HTML5 i CSS3, chociaż IE9 nie ma niektórych najlepszych funkcji CSS3 i HTML5. Ale jestem pewien, że możesz uruchomić IE10 w ten sam sposób. Problem polegałby na tym, że system docelowy musiałby mieć zainstalowany IE10, a ponieważ wciąż jest dostępny podgląd w systemie Windows 7, odradzam to.
2. OpenWebKitSharp
OpenWebKitSharp to opakowanie .net dla silnika Webkit opartego na projekcie WebKit.NET 0.5. WebKit to silnik układu używany przez Chrome / Safari
Plusy:
Cons:
OpenWebKit jest całkiem fajny, chociaż wiele funkcji nie zostało jeszcze zaimplementowanych, miałem kilka problemów z używaniem go w Visual Studio, które rzuca odwołanie do zerowego obiektu tutaj, a następnie w trybie projektowania, są pewne problemy z js. Każdy, kto go użyje, niemal natychmiast zauważy, że js alert nic nie robi. Zdarzenia takie jak mouseup, mousedown ... itd. Nie działają, przeciąganie i upuszczanie js jest błędne i tak dalej
Miałem też pewne trudności z jego instalacją, ponieważ wymaga zainstalowanej konkretnej wersji redystrybucyjnej wersji VC, więc po wyjrzeniu przejrzałem dziennik zdarzeń, znalazłem wersję VC i zainstalowałem ją.
3. GeckoFX
Plusy:
Cons:
GeckoFX to wieloplatformowy kontroler Webrowser do osadzania w aplikacjach WinForms. Można tego używać z .NET w systemie Windows i mono w systemie Linux. Gecko to silnik układu wykorzystywany przez Firefox.
Wpadłem na kilka informacji, że GeckoFX nie jest aktywnie rozwijany, co nie jest prawdą, oczywiście, że zawsze jest to jedna lub dwie wersje za Firefoksem, ale to normalne, byłem pod wrażeniem aktywności i samej kontroli. Robi wszystko, czego potrzebowałem, ale potrzebowałem trochę czasu, aby go uruchomić, oto mały samouczek, aby go uruchomić:
Jeśli naprawdę musisz korzystać z Chrome, spójrz na ten produkt o nazwie Awesomium , jest bezpłatny dla niekomercyjnych projektów, ale licencja kosztuje kilka tysięcy dolarów na komercyjne.
źródło
Miałem ten sam problem, WebBrowser używał starej wersji IE, z pewnym googlowaniem natrafiłem na następujący kod, który wprowadza zmianę w rejestrze i sprawia, że WebBrowser może używać najnowszej możliwej wersji IE:
Wystarczy utworzyć klasę i umieścić w niej ten kod, a następnie uruchomić następujący kod podczas uruchamiania programu:
VB.NET:
Możesz go używać w następujący sposób:
źródło
Możesz użyć rejestru, aby ustawić wersję IE do sterowania przeglądarką. Przejdź do: HKLM \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION i dodaj „yourApplicationName.exe” o wartości emulacji przeglądarki Aby zobaczyć wartość emulacji przeglądarki, zapoznaj się z linkiem: http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation
źródło
Spójrz na kontrolkę Mono.WebBrowser - osadza w WinForms Gecko (używane przez Firefox) lub WebKit (używane przez Safari).
źródło
Wiem, że to nie jest kontrolka „zastępująca” WebBrowser, ale miałem okropne problemy z renderowaniem podczas wyświetlania strony, która używała BootStrap 3+ do układania itp., A potem znalazłem post sugerujący użycie następujących. Najwyraźniej jest specyficzny dla IE i każe mu używać do renderowania najnowszej odmiany znalezionej na komputerze klienckim (więc nie będzie używać IE7, ponieważ uważam, że jest domyślny)
Więc po prostu:
gdzieś w głównej części dokumentu.
Jeśli oczywiście nie jest to twój dokument, to oczywiście nie pomoże (chociaż osobiście uważam to za lukę w zabezpieczeniach, jeśli czytasz strony, które nie zostały utworzone przez Ciebie za pomocą kontrolki przeglądarki internetowej - dlaczego nie po prostu użyć przeglądarki internetowej!)
Powodzenia.
źródło
<head>
, umieścić go jako pierwszego dziecka<head>
. Długo nam to zajęło.<meta>
jako pierwszego elementu potomnego<head>
, będzie działał w trybie zgodności, a nie w trybie krawędzi.Spójrz na DotNetBrowser bibliotekę . Zapewnia oparte na Chromium kontrolki przeglądarki WPF i WinForms, które można dość łatwo osadzić w aplikacji .NET. Obsługuje wszystkie nowoczesne standardy sieciowe, w tym HTML5, CSS3 i JavaScript. Renderowana strona wygląda dokładnie tak, jak w Google Chrome.
Biblioteka dziedziczy architekturę wieloprocesową Chromium - każda strona internetowa jest renderowana w osobnym procesie Chromium, a aplikacja będzie działać nawet po awarii wtyczki lub innym nieoczekiwanym błędzie na stronie internetowej.
Oto kilka innych przydatnych funkcji dostarczanych przez DotNetBrowser: można nasłuchiwać, ładować zdarzenia, obsługiwać aktywność sieci, konfigurować proxy, symulować działania użytkownika, pracować z plikami cookie, uzyskiwać dostęp i modyfikować DOM, słuchać zdarzeń DOM, wywoływać JavaScript z .NET i odwrotnie, użyj kamery internetowej i mikrofonu na stronie internetowej, skonfiguruj komunikację opartą na WebRTC i więcej .
Więcej informacji można znaleźć w interfejsie API .
Poniższy fragment kodu pokazuje, jak utworzyć BrowserView, osadzić go w formularzu i załadować adres URL:
Po uruchomieniu powyższego przykładu otrzymasz następujące dane wyjściowe:
Biblioteka jest komercyjna. Licencje komercyjne obejmują pakiety wsparcia dla różnych rozmiarów zespołów. Możliwe jest również zakup kodu źródłowego biblioteki.
Oprócz własnej strony składnik jest dostępny jako pakiet NuGet i jako pakiet VSIX w Visual Studio Marketplace.
źródło
Wypróbowałem kilka wariantów Webkit, ale z mojego doświadczenia nic nie przebije postępu, jaki ma OpenWebkitSharp . Uwielbiam to uwielbiam .. Wyniki HTML5 i CSS3 są tak blisko, jak to możliwe, aby dostać się do Google Chrome. Bardzo ładny interfejs API i model zdarzeń. Jeśli znajdziesz „niezaimplementowane” interfejsy API najprawdopodobniej, ponieważ nie są one zaimplementowane w Webkit. Wszystko inne działa świetnie.
źródło
AKTUALIZACJA MAJ 2018
Jeśli celujesz w aplikację, która ma działać w systemie Windows 10, możesz teraz osadzić przeglądarkę Edge w aplikacji .net za pomocą zestawu narzędzi Windows Community Toolkit .
Przykład WPF:
1) Zainstaluj pakiet Windows Community Toolkit Nuget
2) Kod XAML
3) Kod CS:
Przykład WinForms:
Więcej informacji można znaleźć pod tym linkiem .
źródło
Wypróbuj EO.WebBrowser . Jest nowy i oparty na najnowszej wersji przeglądarki Chrome. Najlepsze w tym wszystkim jest to, że pakuje wszystko w jedną bibliotekę DLL .NET, więc nie tylko jest bardzo łatwa w użyciu i wdrożeniu, ale także ta sama biblioteka DLL obsługuje wersje 32-bitowe i 64-bitowe, ponieważ jest biblioteką DLL.
źródło
Użyłem GeckoFX i bardzo mi to służy. Korzysta z silnika Firefox. Jedynym zastrzeżeniem, z jakim kiedykolwiek się z nim spotkałem, jest to, że emituje zdarzenie „DocumentLoaded” jeden raz, zanim dokument zostanie w pełni załadowany ... Myślę, że wystrzeliwuje jedno po załadowaniu HTML, a następnie drugie, gdy wszystkie obrazy i inne rzeczy są ładowane. Naprawiłem to, po prostu ignorując pierwszy, i jak dotąd działał pięknie.
Można go znaleźć tutaj: https://bitbucket.org/geckofx/
Jak większość porządnych bibliotek, jest open source.
źródło
MozNet jest formantem .NET, wcześniej opartym na mniej lub bardziej porzuconym kontrolce GeckoFX, ale jest w fazie rozwoju i ma znacznie więcej funkcji, niż GeckoFX może potrząsnąć. Można go znaleźć na stronie Se7en Soft .
źródło
EO.BrowserControl jest szybki i łatwy. Ma silnik przeglądarki Chrome i współpracuje z dowolną wersją platformy .NET
https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7
Uwaga: jest to produkt objęty licencją komercyjną i nie promuję go w tym celu. Po wypróbowaniu różnych innych rzeczy, ostatecznie wybrałem to.
źródło
Aktualizacja 2016:
Istnieją 3 dodatkowe opcje, które mogę zasugerować:
1. BrowseEmAll.Cef
Składnik .Net, którego można użyć do zintegrowania silnika Chrome z aplikacją .Net. Oparty na CefGlue, ale nieco szybszy w aktualizacjach do najnowszej wersji Chrome. Dostępna jest również opcja wsparcia komercyjnego, która może się przydać dla niektórych. Oczywiście sam komponent jest open source .
2. BrowseEmAll.Gecko
Kolejny komponent .Net, którego można użyć do zintegrowania silnika Firefox z aplikacją .Net. Jest to oparte na Geckofx, ale w przeciwieństwie do obecnej wersji Geckofx, będzie to działać z normalną wersją kompilacji Firefoksa. Aby korzystać z Geckofx, musisz sam zbudować Firefoksa. Ponownie dostępne jest wsparcie komercyjne, ale sam komponent jest w pełni open source .
3. BrowseEmAll Core API
Potrzebujesz wszystkich różnych przeglądarek w swojej aplikacji .Net? Który interfejs API BrowseEmAll Core możesz zintegrować z aplikacją Chrome, Firefox, Webkit i Internet Explorer . Jest to jednak produkt komercyjny, więc ostrzegam.
(Pełne ujawnienie: Pracuję dla tej firmy, więc weź wszystko, co mówię, z odrobiną soli)
źródło
Jeśli szukasz ładnej kontrolki opartej na IE - sprawdź: http://code.google.com/p/csexwb2/
Użyłem go w produktach produkcyjnych. Jest całkiem dobry i ma dobre dema, chociaż nie wydaje się, aby był utrzymywany tak dobrze, jak kiedyś.
źródło
Zarówno Geckofx, jak i Webkit.net były obiecujące na początku, ale nie były na bieżąco odpowiednio z Firefoksem i Chrome, podczas gdy Internet Explorer był ulepszony, podobnie jak przeglądarka Webbrowser, choć domyślnie zachowuje się jak IE7, niezależnie od wersji IE ale można to naprawić, przechodząc do rejestru i zmieniając go na IE9 zezwalając na HTML5.
źródło
Sprawdź sterowanie GeckoFX .
źródło
Webview2 - oparty na chromie (wersja zapoznawcza) jest teraz dostępny zarówno dla winform, jak i wpf
Proszę spojrzeć: https://docs.microsoft.com/en-us/microsoft-edge/webview2/
źródło
Wypróbowałem wszystkie przeglądarki, które tam są. Niestety, jedynym, który naprawdę działał dla mnie w każdych okolicznościach, był EO.Browser. Chciałbym móc wybrać bezpłatne rozwiązanie, ale skończyło się na EO.Browser. Jest dość drogi, ale dobrze utrzymany.
źródło
Aktualizacja 2016:
Dla mnie jedyną niezawodną, utrzymywaną alternatywą przeglądarki IE jest EO.WebBrowser. Dni i tydzień spędziłem na wypróbowywaniu innych. Wszystkie z nich miały pewne problemy, które w pewnym momencie zatrzymały dla mnie program.
źródło
Warto zapoznać się z produktem komercyjnym, takim jak WebKitX tutaj: https://www.webkitx.com
Korzysta z Chromium Embedded Framework i renderuje HTML5, WebGL, PDF i Flash w Windows XP, 7, 8, 10. Zapewnia również 32-bitowe, a także 64-bitowe smaki kontroli.
Oferuje dostęp do DOM przy użyciu obiektów COM podobnych do kontrolki IE WebBrowser:
Możesz wywoływać JavaScript przez nazwę funkcji przekazując argumenty skalarne (nie używając eval), a także ma wywołania JavaScript dla Angulara :
Możesz dodać własne JavaScript między obiektami COM:
Obsługuje WebGL / WebAudio dla gier HTML5, które można wyłączyć w środowiskach Citrix:
źródło