WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setPluginsEnabled(true);
myWebView.loadUrl("file:///android_asset/index.html");
myWebView.loadUrl("javascript:hello()");
它在4.0模拟器或真实设备中不起作用。我在html中有适当的标签,如
<script type="text/javascript">..</script>
我可以从firefox的控制台启动它没有问题(它不会调用警报命令,我知道它在android中不起作用)
我没有解决方案,请帮助我。
顺便说一句这个函数调用在这里似乎没用,因为它是用于测试的,如果有效,我会在后面给出一个参数。
编辑:
<h1 id="title"></h1>
....
<script type="text/javascript">
function hello()
{
console.log("hello");
var title = document.getElementById("title");
title.innerHTML = "hello";
}
</script>
答案 0 :(得分:2)
问题是,当您调用javascript时,无法保证页面已加载。确保仅在页面完全加载时调用javascript函数。
以下代码(引自http://lexandera.com/2009/01/injecting-javascript-into-a-webview/)会给你提醒。
final WebView webview = (WebView)findViewById(R.id.browser);
/* JavaScript must be enabled if you want it to work, obviously */
webview.getSettings().setJavaScriptEnabled(true);
/* WebViewClient must be set BEFORE calling loadUrl! */
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
webview.loadUrl("javascript:(function() { " +
"document.getElementsByTagName('body')[0].style.color = 'red'; " +
"})()");
}
});
webview.loadUrl("http://code.google.com/android");