Intereting Posts

UWP Webview permet d'obtenir des liens de la page Web en un tableau

Je ne peux que trouver d'anciennes réponses périmées avant UWP Win 10. Je sais comment faire les anciennes façons, mais ça me donne des problèmes.

Ce que j'ai jusqu'à présent est ci-dessous, notez que le problème semble être dans le VB où il ne fait pas l'élément par la commande de nom de balise comme on m'a dit qu'il devrait. Changez cela pour le HTML interne, cependant, il va remplir la variable html avec la page complète. Je ne peux donc pas obtenir les liens eux-mêmes, il semble.

Toute aide est appréciée! Merci!

XAML

<Page x:Class="webviewMessingAround.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:webviewMessingAround" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <WebView x:Name="webview" Source="http://regsho.finra.org/regsho-December.html" DOMContentLoaded="WebView_DOMContentLoaded" /> <Button x:Name="button" HorizontalAlignment="Left" Margin="145,549,0,0" VerticalAlignment="Top"> <Button x:Name="button1" Click="button_Click" Content="Button" Height="58" Width="141"/> </Button> </Grid> </Grid> </Page> 

Code VB

  Private Async Sub webview_DOMContentLoaded(sender As WebView, args As WebViewDOMContentLoadedEventArgs) Handles webview.DOMContentLoaded Dim html = Await webview.InvokeScriptAsync("eval", ({"document.getElementsByTagName('a');"})) 'Debug.WriteLine(html) End Sub 

InvokeScriptAsync ne peut que renvoyer le résultat de la chaîne de l'invocation du script.

Valeur de retour

Lorsque cette méthode revient, la chaîne résulte de l'invocation du script.

Donc, si vous voulez obtenir des liens forment une page Web, vous devez mettre tous les liens dans une chaîne pour revenir. Pour un exemple C #:

 string html = await webview.InvokeScriptAsync("eval", new string[] { "[].map.call(document.getElementsByTagName('a'), function(node){ return node.href; }).join('||');" }); System.Diagnostics.Debug.WriteLine(html); 

J'utilise ici

 [].map.call(document.getElementsByTagName('a'), function(node){ return node.href; }).join('||'); 

Pour mettre tous les liens dans une chaîne. Vous devrez peut-être changer ce code JavaScript pour implémenter le vôtre.

Après cela, vous pouvez diviser la chaîne en un tableau comme:

 var links = html.Split(new[] { "||" }, StringSplitOptions.RemoveEmptyEntries); 

Bien que j'ai utilisé C # par exemple, mais le code VB devrait être similaire.