基本上我想要做的就是这个this,但我似乎找不到类似于webview XAML控件的东西。我最终需要做的是从webview捕获传入的json文件。因此,我收到来自服务器的错误请求和来自webview的不受支持的文件异常。我考虑过注入一个javascript以便提醒我,我可以获取传入json的主体并绕过所有错误。
答案 0 :(得分:1)
您可以做两件事:
您可以使用InvokeScript
来调用javascript函数。
如果您的网页上有脚本:
<script lang="en-us" type="text/javascript">
function myFunction() {
alert("I am an alert box!");
}
</script>
然后你可以在C#中调用:
MyWebview.InvokeScript("myFunction", null);
将执行脚本函数myFunction
。
如果您下载HTML页面和所有其他所需文件(使用Windows HttpClient),您可以通过操作然后导航到字符串来注入任何代码。
假设您要更改上面的脚本以添加其他功能,&#34; HelloWorld&#34;,那么您可以
<script lang=\"en-us\" type=\"text/javascript\">
C#代码:
string MyWebPageString = GetWebpageString(WebpageUri);
string ScriptTagString = "<script lang=\"en-us\" type=\"text/javascript\">";
int IndexOfScriptTag = MyWebPageString.IndexOf(ScriptTagString);
int LengthOfScriptTag = ScriptTagString.Length;
string InsertionScriptString = "function SayHelloWorld() { window.external.notify(\"Hello World!\");} ";
MyWebPageString = MyWebPageString.Insert(IndexOfScriptTag + LengthOfScriptTag + 1, InsertionScriptString);
MyWebview.NavigateToString(MyWebPageString);
结果是导航到网页将如下所示:
<script lang="en-us" type="text/javascript"> function SayHelloWorld() { window.external.notify("Hello World!");}
function myFunction() {
alert("I am an alert box!");
}
</script>
由于注入可以应用于任何区域,甚至HTML,你应该能够解决问题。
希望这会有所帮助。祝你好运。
此答案基于this MSDN blog