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

実はタミララシがくれたのと同じものでした。誰かが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 に答える
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 に答える
-1

このリンクを試してみてください。これがあなたの助けになることを願っています。

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

Android 4.2.1、WebViewおよびjavascriptインターフェースが壊れています

JavascriptインターフェースがAndroid4.2で動作しない

于 2013-02-08T12:05:17.370 に答える