Apakah ada cara yang relatif mudah untuk menyisipkan peramban modern ke dalam aplikasi .NET?
Sejauh yang saya mengerti, WebBrowser
kontrol adalah pembungkus untuk IE , yang tidak akan menjadi masalah kecuali bahwa itu terlihat seperti versi IE yang sangat lama , dengan semua yang diperlukan dalam hal pengacakan CSS, potensi risiko keamanan (jika mesin rendering tidak ditambal, bisakah saya benar-benar berharap masalah buffer overflow zillion diperbaiki?), dan masalah lainnya.
Saya menggunakan Visual Studio C # (edisi ekspres - apakah ada bedanya di sini?)
Saya ingin mengintegrasikan peramban web yang baik dalam aplikasi saya. Dalam beberapa, saya hanya menggunakannya untuk menangani proses pendaftaran pengguna, antarmuka dengan beberapa fitur situs web saya dan hal-hal lain dari pesanan itu, tetapi saya memiliki aplikasi lain dalam pikiran yang akan memerlukan lebih banyak ... kontrol.
Saya butuh:
- Peramban yang dapat berintegrasi di dalam jendela aplikasi saya (bukan jendela terpisah)
- Dukungan yang baik untuk CSS, js dan teknologi web lainnya, setara dengan browser modern apa pun
- Fungsi-fungsi dasar browser seperti "navigasi", "kembali", "muat ulang" ...
- Akses bebas ke kode halaman dan output.
Saya berpikir tentang Chrome, karena itu ada di bawah lisensi BSD, tapi saya akan senang dengan versi IE yang terbaru.
Sebisa mungkin, saya ingin membuat hal-hal sederhana. Yang terbaik adalah jika seseorang dapat menambal WebBrowser
kontrol yang ada , yang sudah sekitar 70% dari apa yang saya butuhkan, tapi saya pikir itu tidak mungkin.
Saya telah menemukan kontrol activeX untuk Mozilla ( http://www.iol.ie/~locka/mozilla/control.htm ) tetapi sepertinya ini adalah versi lama, jadi itu belum tentu merupakan peningkatan.
Saya terbuka untuk saran
sumber
WebBrowser
kontrol yang dihosting menggunakan emulasi IE7, kecuali diperintahkan sebaliknyaFEATURE_BROWSER_EMULATION
. Hal ini didokumentasikan di sini: blogs.msdn.com/b/askie/archive/2009/03/23/...Jawaban:
Checkout CefSharp. Net binding, sebuah proyek yang saya mulai beberapa waktu lalu yang untungnya diambil oleh komunitas dan berubah menjadi sesuatu yang luar biasa.
Proyek ini membungkus Kerangka Tertanam Chromium dan telah digunakan di sejumlah proyek besar termasuk klien Windows Rdio, Facebook Messenger untuk Windows dan Github untuk Windows.
Ini fitur kontrol browser untuk WPF dan Winforms dan memiliki banyak fitur dan poin ekstensi. Berbasis pada Chromium juga sangat cepat.
Raih dari NuGet:
Install-Package CefSharp.Wpf
atauInstall-Package CefSharp.WinForms
Lihat contoh dan berikan pemikiran / umpan balik / tarik-permintaan: https://github.com/cefsharp/CefSharp
BSD Berlisensi
sumber
Chrome menggunakan (fork of) Webkit jika Anda tidak tahu, yang juga digunakan oleh Safari. Inilah beberapa pertanyaan yang sama:
Webkit yang satu tidak bagus seperti yang dinyatakan oleh jawaban lainnya, satu versi tidak lagi berfungsi (kode google) dan versi Mono bersifat eksperimental. Akan lebih baik jika seseorang melakukan upaya untuk membuat pembungkus .NET yang layak untuk itu tetapi itu bukan sesuatu yang tampaknya ingin dilakukan siapa pun - yang mengejutkan mengingat sekarang memiliki dukungan untuk HTML5 dan begitu banyak fitur lain yang dimiliki IE (8). ) mesin kurang.
Pembaruan (2014)
Ada proyek berlisensi ganda baru yang memungkinkan Anda menanamkan Chrome ke dalam aplikasi .NET yang disebut Awesomium . Itu datang dengan api NET. Tetapi membutuhkan beberapa hacks untuk rendering (contoh menggambar jendela browser ke buffer, cat buffer sebagai gambar dan menyegarkan pada timer).
Saya pikir ini adalah browser yang digunakan oleh Origin di Battlefield 3.
Pembaruan (2016)
Sekarang ada DotnetBrowser , alternatif komersial untuk Awesomium. Berbasiskan Chromium.
sumber
Saya telah menguji alternatif untuk komponen browser Web C # selama beberapa hari sekarang dan di sini adalah daftar saya:
1. Menggunakan versi IE yang lebih baru 8,9:
Komponen Browser Web adalah IE7 bukan IE8? Bagaimana cara mengubahnya?
Pro:
Cons:
Ini tidak memerlukan banyak pekerjaan dan Anda bisa mendapatkan dukungan HTML5 dan CSS3 meskipun IE9 tidak memiliki beberapa fitur CSS3 dan HTML5 terbaik. Tapi saya yakin Anda bisa menjalankan IE10 dengan cara yang sama. Masalahnya adalah bahwa sistem target harus menginstal IE10, dan karena masih dalam pratinjau pada Windows 7 saya akan menyarankan menentangnya.
2. OpenWebKitSharp
OpenWebKitSharp adalah pembungkus .net untuk mesin webkit berdasarkan proyek WebKit.NET 0.5. WebKit adalah mesin tata letak yang digunakan oleh Chrome / Safari
Pro:
Cons:
OpenWebKit cukup bagus walaupun banyak fitur belum diimplementasikan, saya mengalami beberapa masalah menggunakannya dengan visual studio yang melempar referensi objek nol di sini dan kemudian dalam mode desain, ada beberapa masalah js. Semua orang yang menggunakannya akan segera menyadari bahwa js alert tidak melakukan apa-apa. Acara seperti mouseup, mousedown ... dll tidak bekerja, js drag and drop buggy dan sebagainya ..
Saya juga mengalami beberapa kesulitan untuk menginstalnya karena memerlukan versi khusus VC yang dapat diinstal ulang, jadi setelah pengecualian saya melihat log peristiwa, menemukan versi VC dan menginstalnya.
3. GeckoFX
Pro:
Cons:
GeckoFX adalah kontrol Webrowser lintas platform untuk menanamkan ke dalam Aplikasi WinForms. Ini dapat digunakan dengan .NET di Windows dan dengan mono di Linux. Gecko adalah mesin tata letak yang digunakan oleh Firefox.
Saya menemukan beberapa informasi bahwa GeckoFX tidak dikembangkan secara aktif yang tidak benar, tentu saja selalu satu atau dua versi di belakang Firefox tetapi itu normal, saya benar-benar terkesan dengan aktivitas dan kontrol itu sendiri. Itu melakukan semua yang saya butuhkan, tapi saya butuh waktu untuk menjalankannya, berikut ini adalah sedikit tutorial untuk membuatnya berjalan:
Jika Anda benar-benar harus menggunakan Chrome, lihat produk ini bernama Awesomium , gratis untuk proyek non-komersial, tetapi lisensi beberapa ribu dolar untuk komersial.
sumber
Saya memiliki masalah yang sama, WebBrowser menggunakan versi lama IE, dengan beberapa googling saya menemukan kode berikut yang membuat perubahan ke dalam registri dan membuat WebBrowser untuk menggunakan versi IE terbaru yang mungkin:
Anda hanya perlu membuat kelas dan memasukkan kode ini di dalamnya, lalu jalankan kode berikut saat program dimulai:
VB.NET:
Anda dapat menggunakannya seperti:
sumber
Anda dapat menggunakan registri untuk mengatur versi IE untuk kontrol server web. Pergi ke: HKLM \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION dan tambahkan "yourApplicationName.exe" dengan nilai browser_emulation Untuk melihat nilai browser_emulation, lihat tautan: http://msdn.microsoft.com/en-us /library/ee330730%28VS.85%29.aspx#browser_emulation
sumber
Lihat di kontrol Mono.WebBrowser - ia menyematkan Gecko (seperti yang digunakan oleh Firefox) atau WebKit (seperti yang digunakan oleh Safari) ke WinForms (tanpa menggunakan ActiveX).
sumber
Saya tahu ini bukan kontrol 'pengganti' WebBrowser, tapi saya mengalami beberapa masalah rendering yang mengerikan sambil menunjukkan halaman yang menggunakan BootStrap 3+ untuk tata letak dll dan kemudian saya menemukan posting yang menyarankan saya menggunakan yang berikut. Tampaknya ini khusus untuk IE dan menyuruhnya untuk menggunakan variasi terbaru yang ditemukan pada mesin klien untuk rendering (jadi itu tidak akan menggunakan IE7 karena saya percaya adalah default)
Jadi cukup cantumkan:
suatu tempat di bagian kepala dokumen Anda.
Jika tentu saja itu bukan dokumen Anda, maka ini jelas tidak akan membantu (meskipun saya pribadi menganggapnya sebagai lubang keamanan jika Anda membaca halaman yang tidak dibuat sendiri melalui kontrol webbrowser - mengapa tidak menggunakan webbrowser!)
Semoga berhasil.
sumber
<head>
, letakkan sebagai anak pertama<head>
. Kami butuh waktu untuk memikirkannya.<meta>
anak pertama<head>
, ia akan berjalan dalam mode kompatibilitas, bukan dalam mode tepi.Lihatlah perpustakaan DotNetBrowser . Ini memberikan kontrol browser WPF dan WinForms berbasis Chromium, yang cukup mudah untuk dimasukkan ke dalam aplikasi .NET. Ini mendukung semua standar web modern termasuk HTML5, CSS3, dan JavaScript. Halaman yang dirender terlihat persis seperti di Google Chrome.
Perpustakaan mewarisi arsitektur multi-proses Chromium - setiap halaman web dirender dalam proses Chromium yang terpisah, dan aplikasi akan terus bekerja bahkan setelah plugin crash atau kesalahan tak terduga lainnya terjadi pada halaman web.
Berikut adalah beberapa fitur berguna lainnya, yang disediakan oleh DotNetBrowser: dimungkinkan untuk mendengarkan memuat acara, menangani aktivitas jaringan, mengkonfigurasi proxy, mensimulasikan tindakan pengguna, bekerja dengan cookie, mengakses dan memodifikasi DOM, mendengarkan acara DOM, memanggil JavaScript dari .NET dan sebaliknya, menggunakan kamera web dan mikrofon di halaman web, mengatur komunikasi berbasis WebRTC, dan banyak lagi .
Lihat Referensi API untuk lebih jelasnya.
Cuplikan kode di bawah ini menunjukkan cara membuat BrowserView, menanamkannya ke dalam Formulir, dan memuat URL:
Setelah Anda menjalankan contoh di atas, Anda akan mendapatkan output berikut:
Perpustakaan bersifat komersial. Lisensi komersial termasuk paket dukungan untuk ukuran tim yang berbeda. Dimungkinkan juga untuk membeli kode sumber perpustakaan.
Selain halamannya sendiri, komponen tersedia sebagai paket NuGet dan sebagai paket VSIX di Visual Studio Marketplace.
sumber
Saya sudah mencoba beberapa varian Webkit, tetapi dalam pengalaman saya tidak ada yang mengalahkan kemajuan yang dimiliki OpenWebkitSharp . Love it love it .. Skor HTML5 dan CSS3 sedekat mungkin ke Google Chrome. API dan model acara yang sangat bagus. Jika Anda menemukan "tidak diimplementasikan" kemungkinan besar API karena mereka tidak diterapkan di Webkit. Semuanya bekerja dengan baik.
sumber
PEMBARUAN 2018 MEI
Jika Anda menargetkan aplikasi untuk dijalankan pada Windows 10, maka sekarang Anda dapat menanamkan browser Edge ke aplikasi .net Anda dengan menggunakan Windows Community Toolkit .
Contoh WPF:
1) Instal Paket Nugget Toolkit Windows Community
2) Kode XAML
3) Kode CS:
Contoh WinForms:
Silakan merujuk ke tautan ini untuk informasi lebih lanjut.
sumber
Coba EO.WebBrowser . Ini baru dan didasarkan pada versi terbaru dari browser Chrome. Bagian terbaik tentang itu adalah bahwa paket semuanya di dalam satu. NET dll sehingga tidak hanya sangat mudah digunakan dan digunakan, tetapi juga DLL yang sama mendukung 32 bit dan 64 bit karena itu. NET dll.
sumber
Saya telah menggunakan GeckoFX dan itu sangat membantu saya. Ini menggunakan mesin Firefox. Satu-satunya peringatan yang pernah saya temui, adalah bahwa ia memancarkan event "DocumentLoaded" satu kali sebelum dokumen benar-benar dimuat penuh ... Saya pikir itu akan menembak keluar satu ketika HTML dimuat, dan kemudian satu lagi ketika semua gambar dan barang dimuat. Saya sudah memperbaikinya dengan hanya mengabaikan yang pertama, dan itu telah bekerja dengan indah tanpa gagal sejauh ini.
Anda dapat menemukannya di sini: https://bitbucket.org/geckofx/
Seperti kebanyakan perpustakaan yang layak, ini adalah open-source.
sumber
MozNet adalah kontrol .NET, yang sebelumnya didasarkan pada kontrol GeckoFX yang kurang lebih ditinggalkan, tetapi sedang dalam pengembangan penuh dan memiliki lebih banyak fitur daripada GeckoFX. Anda dapat menemukannya di situs web Se7en Soft .
sumber
EO.BrowserControl cepat dan mudah. Ini memiliki mesin browser Chrome dan bekerja dengan versi .NET
https://visualstudiogallery.msdn.microsoft.com/fcee0646-42e7-484f-b22e-f8b2ace55dd7
Catatan: Ini adalah produk berlisensi komersial dan saya tidak mempromosikannya dengan itu dalam pikiran. Setelah mencoba berbagai hal lain, saya akhirnya memilih ini.
sumber
Pembaruan 2016:
Ada 3 opsi tambahan yang bisa saya sarankan:
1. BrowseEmAll.Cef
Komponen .Net yang dapat digunakan untuk mengintegrasikan mesin Chrome ke dalam aplikasi .Net Anda. Berdasarkan CefGlue tetapi sedikit lebih cepat pada pembaruan ke versi Chrome terbaru. Juga ada opsi dukungan komersial yang tersedia yang mungkin berguna untuk beberapa. Tentu saja komponen itu sendiri adalah open source .
2. JelajahiEmAll.Gecko
Komponen .Net lain yang dapat digunakan untuk mengintegrasikan mesin Firefox ke dalam aplikasi .Net Anda. Ini didasarkan pada Geckofx tetapi tidak seperti versi Geckofx saat ini, ini akan bekerja dengan versi rilis normal Firefox. Untuk menggunakan Geckofx, Anda harus membuat Firefox sendiri. Lagi-lagi dukungan komersial tersedia tetapi komponen itu sendiri sepenuhnya open source .
3. BrowseEmAll Core API
Perlu semua peramban yang berbeda di Aplikasi .Net Anda? Dengan API BrowseEmAll Core Anda dapat mengintegrasikan Chrome, Firefox, Webkit, dan Internet Explorer ke dalam aplikasi Anda. Ini adalah produk komersial jadi berhati-hatilah.
(Pengungkapan penuh: Saya bekerja untuk perusahaan ini, jadi ambillah semua yang saya katakan dengan sebutir garam)
sumber
Webview2 - berbasis kromium (pratinjau) sekarang tersedia untuk winform dan wpf
Silakan lihat: https://docs.microsoft.com/en-us/microsoft-edge/webview2/
sumber
Jika Anda mencari kontrol berbasis IE yang bagus - lihat: http://code.google.com/p/csexwb2/
Saya sudah menggunakannya dalam produk-produk produksi. Ini cukup bagus dan memiliki demo yang baik meskipun tampaknya tidak dipertahankan seperti sekarang.
sumber
Geckofx dan Webkit.net keduanya menjanjikan pada awalnya, tetapi mereka tidak tetap up to date dengan Firefox dan Chrome masing-masing sementara Internet Explorer membaik, begitu pula kontrol Webbrowser, meskipun berperilaku seperti IE7 secara default terlepas dari versi IE apa yang Anda miliki tetapi itu bisa diperbaiki dengan masuk ke registri dan mengubahnya ke IE9 memungkinkan HTML5.
sumber
Lihat kontrol GeckoFX .
sumber
Saya telah mencoba semua browser yang ada di luar sana. Sayangnya satu-satunya yang benar-benar bekerja untuk saya dalam semua keadaan adalah EO.Browser. Saya berharap saya bisa memilih solusi gratis, tetapi saya berakhir dengan EO.Browser. Itu pricy, tapi terawat dengan baik.
sumber
Pembaruan 2016:
Bagi saya, satu-satunya alternatif browser yang dapat diandalkan dan dikelola untuk IE adalah EO.WebBrowser. Saya menghabiskan hari dan minggu untuk mencoba yang lain. Mereka semua memiliki beberapa masalah yang menghentikan pertunjukan untuk saya di beberapa titik.
sumber
Mungkin patut untuk melihat produk komersial seperti WebKitX di sini: https://www.webkitx.com
Menggunakan Chromium Embedded Framework dan merender HTML5, WebGL, PDF, dan Flash pada Windows XP, 7, 8, 10. Ini juga menyediakan rasa kontrol 32-bit dan 64-bit.
Ini menawarkan akses DOM menggunakan objek COM mirip dengan kontrol IE WebBrowser:
Anda dapat memanggil JavaScript berdasarkan nama fungsi dengan argumen skalar (tidak menggunakan eval) dan juga memiliki callback JavaScript untuk Angular :
Anda dapat menambahkan objek COM yang dapat dioperasikan sendiri ke JavaScript:
Ini mendukung WebGL / WebAudio untuk game HTML5, yang dapat Anda nonaktifkan untuk lingkungan Citrix:
sumber