Es importante comprender el código correctamente previamente a utilizarlo a tu trabajo y si tquieres aportar algo puedes dejarlo en los comentarios.
Solución:
Control del navegador web
El WebBrowser
control usa la misma versión de Internet Explorer que está instalada en su sistema operativo, pero no usa el último modo de documento de forma predeterminada y muestra el contenido en modo de compatibilidad.
Síntoma – Como síntoma, el sitio funciona correctamente en Internet Explorer u otros navegadores, pero WebBrowser
el control no muestra bien el sitio y, en algunos sitios, muestra errores de secuencia de comandos.
Solución – Puedes decirle al WebBrowser
control para utilizar el último modo de documento sin modo de compatibilidad en WebBrowser
control. Puede seguir las instrucciones aquí para deshabilitar la configuración usando el registro.
[Reference: Browser Emulation]
Aplicar la configuración de emulación de navegador mediante código
Si desea aplicar la configuración mediante código, ejecute el siguiente código una vez:
using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
@"SoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION",
true))
var app = System.IO.Path.GetFileName(Application.ExecutablePath);
key.SetValue(app, 11001, Microsoft.Win32.RegistryValueKind.DWord);
key.Close();
En el código anterior, he usado 11001
lo que significa modo IE11 Edge.
Internet Explorer 11. Las páginas web se muestran en el modo de borde IE11, independientemente de la directiva! DOCTYPE declarada. No declarar una directiva! DOCTYPE hace que la página se cargue en Quirks.
Aplicar la configuración de Emulación del navegador manualmente
Abra el editor del registro y navegue HKEY_CURRENT_USER
, ve a lo siguiente key:
SoftwareMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION
Agregue los siguientes valores:
"YourApplicationFileName.exe"=dword:00002af9
"YourApplicationFileName.vshost.exe"=dword:00002af9
(En versiones anteriores de Visual Studio, necesitaba agregar vshost.exe valor también, cuando ejecuta su programa en Visual Studio.)
Para crear entradas, haga clic derecho en un área vacía del panel derecho, luego en la ventana que aparece después de seleccionar dword
valor, elija hexadecimal e ingrese 2af9
:
En los pasos anteriores, he usado 11001
lo que significa modo IE11 Edge.
Utilice WebViewCompatible Control para Windows Forms
También puede usar el nuevo control WebViewCompatible para Windows Forms. Puede ver pasos simples para usar aquí: Reemplace el control WebBrowser por el nuevo control compatible con WebView para Windows Forms.
WebViewCompatible
utiliza uno de los dos motores de renderizado para admitir un conjunto más amplio de clientes de Windows:
-
En dispositivos con Windows 10, el motor de renderizado de Microsoft Edge más nuevo se usa para incrustar una vista que renderiza contenido HTML con un formato enriquecido desde un servidor web remoto, código generado dinámicamente o archivos de contenido.
-
En dispositivos que ejecutan versiones anteriores de Windows, se utiliza System.Windows.Controls.WebBrowser, que proporciona renderizado basado en el motor de Internet Explorer.
-
Nota:
WebView2
es un reemplazo paraWebVeiw
yWebViewCompatible
.
Establecer metaetiqueta X-UA-Compatibile
En caso de que tenga acceso al contenido html de la página y pueda cambiar el contenido (por ejemplo, es un archivo html local o el sitio le pertenece a usted), puede configurar X-UA-Compatibile
metaetiqueta en el head
me gusta: .
Usar otros controles del navegador
Puede confiar en otros controles del navegador como CefSharp
.
En mi caso para el protocolo personalizado incrustado en una aplicación, solo permitiré navegar por las páginas servidas por la aplicación y ningún contenido del exterior, por lo que quería omitir el guardado en el Registro de Windows. Cuando probé después de seguir la respuesta de Reza Aghaei y descubrí que puede cambiar el modo de compatibilidad desde la página de contenido. Esto evitará la necesidad de configurar un registro. key, pero tendrá que agregarlo a cada página.
Para cambiar el modo de compatibilidad de una página, debe agregar una metaetiqueta para que sea aplicada por el motor de renderizado:
...
Los siguientes procedimientos agregarán los key y retírelo de nuevo. Llame a CreateBrowserKey al cargar el formulario en el que se encuentra su navegador web. Luego, al cerrar el formulario, llame a RemoveBrowserKey
Private Sub CreateBrowserKey(Optional ByVal IgnoreIDocDirective As Boolean = False)
' Dim basekey As String = Microsoft.Win32.Registry.CurrentUser.ToString
Dim value As Int32
' Dim thisAppsName As String = My.Application.Info.AssemblyName & ".exe"
' Value reference: http://msdn.microsoft.com/en-us/library/ee330730%28v=VS.85%29.aspx
' IDOC Reference: http://msdn.microsoft.com/en-us/library/ms535242%28v=vs.85%29.aspx
Select Case (New WebBrowser).Version.Major
Case 8
If IgnoreIDocDirective Then
value = 8888
Else
value = 8000
End If
Case 9
If IgnoreIDocDirective Then
value = 9999
Else
value = 9000
End If
Case 10
If IgnoreIDocDirective Then
value = 10001
Else
value = 10000
End If
Case 11
If IgnoreIDocDirective Then
value = 11001
Else
value = 11000
End If
Case Else
Exit Sub
End Select
Microsoft.Win32.Registry.SetValue(Microsoft.Win32.Registry.CurrentUser.ToString & BrowserKeyPath, _
Process.GetCurrentProcess.ProcessName & ".exe", _
value, _
Microsoft.Win32.RegistryValueKind.DWord)
End Sub
Private Sub RemoveBrowserKey()
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(BrowserKeyPath.Substring(1), True)
key.DeleteValue(Process.GetCurrentProcess.ProcessName & ".exe", False)
End Sub
Aquí puedes ver las reseñas y valoraciones de los usuarios
Eres capaz de añadir valor a nuestra información tributando tu experiencia en las notas.