2016-08-29 1 views
2

ich Inhalte in meiner Web-Seite von WebView Steuerung und den HTML-Code genannt injizieren wollen, ist:Ändern Sendedaten in Webview Steuerung

<section id="header" class="header-section section-padding"> 
    <div class="container"> 
     <div class="row"> 
      <div class="text-center"> 
       <h2 class="section-title">Text I Want to Change</h2> 
      </div> 
     </div> 
    </div> 
</section> 

Ich habe versucht, dies aus this tutorial:

string functionString = String.Format("document.getElementById('header').getElementsByTagName('h2')[0].innerHTML = 'new text';"); 
await webView1.InvokeScriptAsync("eval", new string[] { functionString }); 

Aber diese erzeugt Fehler. Ich bin nicht gut in Javascript, also wie ändere ich den Text innerhalb h2 Tag?

XAML-Code:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <WebView x:Name="WebView" 
      LoadCompleted="WebView_LoadCompleted" 
      Source="http://info.vit.ac.in/gravitas2015/tg15/index.html" /> 
    <ProgressRing x:Name="ProgressRing" 
        Width="100" 
        Height="100" 
        Foreground="BlueViolet" 
        IsActive="True" /> 
</Grid> 

Cs Code:

private async void WebView_LoadCompleted(object sender, NavigationEventArgs e) 
{  
    string functionString = String.Format("document.getElementById('header').getElementsByTagName('h2')[0].innerHTML = 'new text';"); 
    await WebView.InvokeScriptAsync("eval", new string[] { functionString }); 
    ProgressRing.Visibility = Visibility.Collapsed; 
} 

Fehler, die ich erhalte:

System.Exception was unhandled by user code 
HResult=-2147352319 
Message=Exception from HRESULT: 0x80020101 
Source=mscorlib 
StackTrace: 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at WindowsApp2.Views.Organisers.<WebView_LoadCompleted>d__1.MoveNext() 
InnerException: 

Um das Problem zu reproduzieren:

  1. erstellen Template10 Hamburger Vorlage
  2. eine neue XAML-Seite hinzufügen team.xaml sagen und diese Seite an Hamburger Shell hinzufügen (eine neue Hamburger-Taste, um diese Seite zu navigieren)
  3. In team.xaml meinen Code kopieren.
  4. Jetzt starten Sie es und navigieren Sie zu dieser Seite von Hamburger Menü.
  5. Dies wird den obigen Fehler erzeugen.

Vielen Dank im Voraus!

+0

* "Aber das erzeugt einen Fehler." * - Sie müssen die genaue Fehlermeldung zusammen mit dem erwarteten Verhalten und dem beobachteten Verhalten angeben. – IInspectable

+0

Ich kann Ihr Problem nicht reproduzieren. Dein Code ist richtig. Wie laden Sie Ihre Seite in die 'WebView' und wann rufen Sie die' InvokeScriptAsync' Methode auf? Könnten Sie ein [mcve] teilen, das Ihr Problem reproduzieren kann? –

Antwort

2

Das Problem hier ist, dass es keine section, deren id ist "Header" in Ihrer HTML-Seite: http://info.vit.ac.in/gravitas2015/tg15/index.html.

Wenn wir den JavaScript-Code in Web-Browser (zB Kante) zu testen, werden wir feststellen, es wird einen Fehler werfen wie folgt vor:
enter image description here

Und das ist der Grund, warum wir Ausnahme erhalten, während InvokeScriptAsync im Code aufrufen -hinter. Ich bin nicht sicher, welche section Sie ändern möchten, aber wenn Sie die JavaScript-Zeichenfolge wie folgt bearbeiten, sollte Ihr Code funktionieren können.

string functionString = String.Format("document.getElementById('portfolio').getElementsByTagName('h2')[0].innerHTML = 'new text';"); 

Außer diesem WebView.LoadCompleted event kann für Versionen nach Windows-8.1 geändert oder nicht verfügbar sein. Verwenden Sie stattdessen NavigationCompleted.

+0

oh mein Schade :) vielen Dank! – Uwpbeginner

Verwandte Themen