#javascript #android
#javascript #Android
Вопрос:
Как мне запустить код JavaScript в webview
?
Можно ли использовать существующий URL-адрес и поместить JavaScript в этот URL webview
-адрес (не onPageFinished), но я не уверен, как это сделать, поэтому я пытаюсь создать короткий HTML-код, который будет запускать JavaScript.
webView.addJavascriptInterface(this, "Android");
String page = "<html>"
"<body>"
"<script>"
"document.write(javascript:Android.getdate())"
"</script>"
"</body>"
"</html>");
webView.loadUrl(page)
Я ожидаю, что при loadUrl
запуске с этой строкой html она запустит getdate()
функцию и отобразит результат.
Ответ №1:
Сначала вам нужно включить JavaScript для WebView в его настройках.
WebSettings webSettings = webView.getSettings();
if (webSettings != null) {
webSettings.setJavaScriptEnabled(true);
}
Также, если вы хотите загрузить HTML вместо URL, вам нужно использовать loadData()
вместо loadUrl()
.
public class MainActivity extends AppCompatActivity {
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
if (webSettings != null) {
webSettings.setJavaScriptEnabled(true);
}
//Enable setWebContentsDebuggingEnabled to use Chrome DevTools in debug build
if (BuildConfig.DEBUG) {
WebView.setWebContentsDebuggingEnabled(true);
}
webView.addJavascriptInterface(this, "Android");
String page = "<html>"
"<body>"
"<h1>Test</h1>"
"<script type="text/javascript">"
" document.write(Android.getDate());"
"</script>"
"</body>"
"</html>";
webView.loadData(page, "text/html", "utf-8");
}
@JavascriptInterface
public String getDate() {
return "<p>The current date is " new Date().toString() "</p>";
}
}