将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 + "%\";");
}