2016-04-21 23 views
0

Ich versuche, ein WebView-Steuerelement zu verwenden programmatischC# Windows Store WebView InvokeScriptAsync wählen Dropdown

<select id="ChooseOption"> 
 
    <option value="Value1">Option1</option> 
 
    <option value="Value2" selected>Option2</option> 
 
    <option value="Value3">Option3</option> 
 
</select>

Der Code, den ich wie die folgenden versucht zu wählen, aber es löst eine Ausnahme HRESULT: 0x80020101 (schlechtes Skript) auf dem ersten InvokeScriptAsync:

string[] args = 
{ 
    "var chooseOption = document.getElementById(\"ChooseOption\");"+ 
    "chooseOption.selectedIndex = 0;" 
}; 
await WebView.InvokeScriptAsync("eval", args); 
await WebView.InvokeScriptAsync("eval", new string[] { "$('#ChooseOption').trigger('change');" }); 

die zweite nicht funktioniert entweder, wenn ich einen Kommentar ou t die erste InvokeScriptAsync-Zeile. Mit der Chrome-Konsole ich tun kann, die folgende und es wird funktionieren:

document.getElementById('ChooseOption').selectedIndex; 
$('#ChooseOption').trigger('change'); 

Was ist der richtige Weg, es zu tun oder es kann sogar die WebView Steuerung über getan werden?

Antwort

0

Ich konnte nicht ausprobiert werden, aber ich denke, Sie sollten einige Anführungszeichen um die Zeichenfolge hinzufügen, die Sie an die Eval-Funktion übergeben.

Was Sie versuchen, hier zu tun, um so etwas wie dies auf der Webseite übersetzen kann:

eval(var chooseOption = document.getElementById("ChooseOption");chooseOption.selectedIndex = 0;) 

Welche nicht gültig ist. Sie wahrscheinlich mehr wollen, etwas zu tun wie:

eval("var chooseOption = document.getElementById(\"ChooseOption\");chooseOption.selectedIndex = 0;") 

(die führende Note/Hinter Anführungszeichen)

Dies führt zu dem folgenden Aufruf in C#:

string[] args = 
{ 
    "\"var chooseOption = document.getElementById('ChooseOption');"+ 
"chooseOption.selectedIndex = 0;\"" 
}; 
await WebView.InvokeScriptAsync("eval", args); 

Sie sollten nur hinzufügen Vorlauf/Nachlauf ", damit Ihre vollständige Zeichenfolge als Zeichenfolge von der JS-Engine empfangen wird.