将JavaScript注入Android 6中的WebView

将JavaScript注入Android 6中的WebView,javascript,android,webview,xamarin,android-6.0-marshmallow,Javascript,Android,Webview,Xamarin,Android 6.0 Marshmallow,因此,最近我试图通过在清单文件中设置Android:targetSdkVersion=“23”来为Android 6构建应用程序,一切进展顺利,但随后我注意到webview的奇怪行为 在我的应用程序中,我首先使用webview.LoadData(someHtmlContent,“text/html;charset=UTF-8”,null)将一些内容加载到webview中然后用户可以在任何时候使用应用程序菜单中的一些按钮更改文本大小。这些按钮的工作原理如下: webview.LoadUrl(“ja

因此,最近我试图通过在清单文件中设置
Android:targetSdkVersion=“23”
来为Android 6构建应用程序,一切进展顺利,但随后我注意到webview的奇怪行为

在我的应用程序中,我首先使用
webview.LoadData(someHtmlContent,“text/html;charset=UTF-8”,null)将一些内容加载到webview中然后用户可以在任何时候使用应用程序菜单中的一些按钮更改文本大小。这些按钮的工作原理如下:

webview.LoadUrl(“javascript:+”document.getElementsByTagName(\'body\”)[0]。style.fontSize=\”“+size+“%\”;”

size
是一个字符串,可以是
100%
(初始大小)到
110%
120%

这种方法有效地将JavaScript注入到已有的内容(HTML)中,并在Android 5及更低版本上运行良好,但在Android 6上却无法运行

在安卓6中,当用户单击注入JS的按钮时,它只是用
size
变量替换webview的内容


有人能帮忙吗?

我不知道为什么
webview
LoadUrl
方法不起作用,但我刚刚发现了一种新方法
EvaluateJavascript
,应该用于安卓4.4及更高版本。我刚刚用我的应用程序(安卓6)测试了一下,效果很好

因此,应该使用以下代码:(我使用的是C#/Xamarin)

if ((int)Build.VERSION.SdkInt >= 19)
{
    webview.EvaluateJavascript ("document.getElementsByTagName(\"body\")[0].style.fontSize = \"" + size + "%\";", null);
}
else
{
    webview.LoadUrl ("javascript:" + "document.getElementsByTagName(\"body\")[0].style.fontSize = \"" + size + "%\";");
}