2

我已经找到了很多关于如何从 android 调用 JavaScript 的示例。但这对我不起作用。我的目标 SDK 是 17(android 4.2)。这就是我从我的活动中加载我的 html 页面的方式:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    myWebView = (WebView)findViewById(R.id.mapwebview1);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    JavaScriptHandler jScriptHandler = new JavaScriptHandler(this); 
    WebChromeClient myWebChromeClient = new WebChromeClient();
    myWebView.setWebChromeClient(myWebChromeClient);
    myWebView.addJavascriptInterface(jScriptHandler, "MyHandler");

    myWebView.loadUrl("file:///android_asset/mywebpage.html");
    myWebView.loadUrl("javascript:myFunc()");


}

这是我的 JavaScriptHandler 的代码:

public class JavaScriptHandler {
//TabFragmentMap mapFragment;
Context context;
//Fragment fragment;

public JavaScriptHandler (Context c){
    this.context = c;
}

}

这是我的html的代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>PhoneGap</title>
</head>
<body onload="myFunc()">
<h1 id="test1">Hello World</h1>
<input type="button" value="Say hello" onClick="moveMyself()" />
<div id="myDiv"></div>
<script type="text/javascript"> 


    function myFunc()
    {

       document.getElementById('test1').innerHTML = 'Good Morning';

    }

</script>
</body>
</html>
4

3 回答 3

2

尝试这个:

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");  
于 2013-02-08T13:55:36.307 回答
2

这实际上和塔米拉拉西给我的东西是一样的。如果有人想从 html 调用现有的 JavaScript 函数,请执行以下操作:

myWebView.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String url){
            myWebView.loadUrl("javascript:myFunc()");
        }
});
myWebView.loadUrl("file:///android_asset/myHtml.html");
于 2013-02-09T11:26:47.963 回答
-1

试试这个链接,我希望这对你有帮助:

http://android-er.blogspot.in/2011/10/call-javascript-inside-webview-from.html

Android 4.2.1、WebView 和 javascript 界面中断

Javascript 界面不适用于 android 4.2

于 2013-02-08T12:05:17.370 回答