2016-03-28 71 views
1

所以最近我試圖通過在清單文件中設置android:targetSdkVersion="23"來構建我的Android 6應用程序,一切都很順利,但後來我注意到了webview的奇怪行爲。將JavaScript注入Android中的WebView中6

在我的應用程序中,我首先使用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.

在Android 6中,當用戶單擊注入JS的按鈕時,它只是替換 webview的內容與size變量。

任何人都可以幫忙嗎?

回答

0

我不知道爲什麼LoadUrl方法webview沒有工作,但我剛剛發現了一個新的方法EvaluateJavascript應該用於Android 4.4及更高版本。我只是用我的應用程序(Android 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 + "%\";"); 
} 

Here there's a Java Example.

相關問題