我如何通过webview注入javascript代码
本文关键字:javascript 代码 注入 webview 何通过 | 更新日期: 2023-09-27 18:03:58
基本上我想做的是这个这个,但我似乎找不到类似的webview XAML控件。我最终需要做的是捕获来自webview的传入json文件。就像这样,我从服务器得到一个糟糕的请求,从webview得到不支持的文件异常。我想注入一个javascript,这样它就会提醒我,我可以得到传入json的正文,绕过所有的错误。
你可以做两件事:
- 可编程调用函数
- 使用HTML字符串 注入任何代码
函数调用
可以使用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),你可以通过操作注入任何代码,然后导航到字符串
假设您想更改上述脚本以添加另一个函数"HelloWorld",那么您可以
- 在文件中搜索你知道会出现的内容,例如:
<script lang='"en-us'" type='"text/javascript'">
- 使用字符串操作,添加所需的文本,例如函数(但这可以是任何东西)
- 导航到字符串
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,因此您应该能够找出一些东西。
希望这对你有帮助。好运。
这个答案是基于这个MSDN博客