Estoy usando un WebView2 en Windows Forms. Quiero obtener esa imagen src de html y mostrarla en un MessageBox
<div class="col-sm-6" style="z-index:900;padding:0"> <img id="imageCodeDisplayId" width="180" height="50" ng-src="mysite.com/wp-content/uploads/img.jpg" alt="Verify Image" style="padding:2px;border-style:solid;border-width:1px;border-color:#CCC;margin-top:5px;margin-bottom:5px" src="mysite.com/wp-content/uploads/img.jpg"> <a class="glyphicon glyphicon-repeat" aria-hidden="true" title="Reload" style="cursor:pointer;font-size:30px;top:10px;left:10px;text-decoration:none" ng-click="getCaptcha()"></a> </div>Puede usar document.getElementById('imageCodeDisplayId').src para acceder al atributo src del elemento img.
Puede usar el método ExecutScriptAsync() para recuperar el valor a través de C#.
Aquí tienes:
// get the src attribute value string srcAttributeValue = await webView21.CoreWebView2.ExecuteScriptAsync("document.getElementById('imageCodeDisplayId').src"); // show it in a message box MessageBox.Show(srcAttributeValue);El código JavaScript se puede inyectar en los controles de WebView2 en tiempo de ejecución mediante aplicaciones host. El JavaScript inyectado se aplica a todos los documentos nuevos de nivel superior y a los marcos secundarios. El JavaScript inyectado en la página se ejecuta en un momento preciso.
Puede usar el siguiente script de Java para seleccionar el atributo src de la etiqueta img especificada y luego mostrarlo en una alerta:
alert(document.getElementById('imageCodeDisplayId').attributes['src'].value); Entonces, en su EnsureHttps 's GuaranteeHttps, use algo como el siguiente código:
void EnsureHttps(object sender, CoreWebView2NavigationStartingEventArgs args) { webView.CoreWebView2 .ExecuteScriptAsync(@"alert(document.getElementById('imageCodeDisplayId').attributes['src'].value);"); args.Cancel = true; }Producción:
Toda la información adicional necesaria está disponible en Comenzar con WebView2 en las aplicaciones de WinForms
Y también WebView2.ExecuteScriptAsync(String) Method describe todo lo que necesita para usarlo.