Run javascript code in Webview

后端 未结 2 1465
孤街浪徒
孤街浪徒 2020-12-01 05:49

I have a webview i am using in android and I\'m trying to trigger javascript on a button click. I\'m trying to use the code below to change the color of the class to red. Bu

相关标签:
2条回答
  • 2020-12-01 06:22

    From kitkat onwards use evaluateJavascript method instead loadUrl to call the javascript functions like below

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            webView.evaluateJavascript("var FunctionOne = function () {"
                + "  try{document.getElementsByClassName('test')[0].style.color='red';}catch(e){}"
                + "};", null);
        } else {
            webView.loadUrl("javascript:"
                + "var FunctionOne = function () {"
                + "  try{document.getElementsByClassName('test')[0].style.color='red';}catch(e){}"
                + "};");
        }
    

    Enable Javascript for your webview by adding the following line

    wb.getSettings().setJavaScriptEnabled(true);
    
    0 讨论(0)
  • 2020-12-01 06:28

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <WebView
            android:id="@+id/webView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    </RelativeLayout>
    

    MainActivity.java

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    
    import com.bluapp.androidview.R;
    
    public class WebViewActivity3 extends AppCompatActivity {
        private WebView webView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_web_view3);
            webView = (WebView) findViewById(R.id.webView);
            webView.setWebViewClient(new WebViewClient());
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl("file:///android_asset/webview1.html");
    
    
            webView.setWebViewClient(new WebViewClient(){
                public void onPageFinished(WebView view, String weburl){
                    webView.loadUrl("javascript:testEcho('Javascript function in webview')");
                }
            });
        }
    }
    

    assets/webview1.html

    <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>WebView1</title>
    <meta forua="true" http-equiv="Cache-Control" content="max-age=0"/>
    </head>
    
    <body style="background-color:#212121">
    <script type="text/javascript">
    function testEcho(p1){
    document.write(p1);
    }
    </script>
    </body>
    
    </html>
    
    0 讨论(0)
提交回复
热议问题