WebChromeClient////WebViewClient区别

来源:互联网 发布:广州辰昆网络通讯器材 编辑:程序博客网 时间:2024/05/13 15:13


A WebView has several customization points where you can add your own behavior. These are:

  • Creating and setting a WebChromeClient subclass. This class is called when something that might impact a browser UI happens, for instance, progress updates and JavaScript alerts are sent here (see Debugging Tasks).
  • Creating and setting a WebViewClient subclass. It will be called when things happen that impact the rendering of the content, eg, errors or form submissions. You can also intercept URL loading here (via shouldOverrideUrlLoading()).
  • Modifying the WebSettings, such as enabling JavaScript withsetJavaScriptEnabled().
  • Injecting Java objects into the WebView using the addJavascriptInterface(Object, String) method. This method allows you to inject Java objects into a page's JavaScript context, so that they can be accessed by JavaScript in the page.


WebvIew有一些自己定义的点,你可以加入自己想要的行为:

     1. 建立并设置WebChromeClient的子类。当影响浏览器UI内容的事件发生时,这个类就会被调用,例如,进度更新以及,Javascript的alert都在这里传入。

     2.建立并设置WebViewClient子类。当影响内容的事件发生时,这个类会被调用,例如错误或是表单提交。也可以在这个类里拦截url加载(复写shouldOverrideUrlLoding()方法)

     3.修改WebSetting,例如,设置允许javasc交互,调用方法seetJavaScriptEnabled();

      4.利用addjavascriptinterface(object,string)()方法向WebView传入一个java对象。这个方法允许你向javascript环境中传入java对象,这样就可以在界面中通过javascript访问这个对象。



 WebSettings webSettings = mWebView.getSettings();       

        webSettings.setJavaScriptEnabled(true);       

  •         mWebView.addJavascriptInterface(new Object() {       
  •             public void clickOnAndroid() {       
  •                 mHandler.post(new Runnable() {       
  •                     public void run() {       
  •                         mWebView.loadUrl("javascript:wave()");       //  可以利用这个方法直接webview调用javascript
  •                     }       
  •                 });       
  •             }       
  •         }, "demo");       //设置给javascript调用
  •         mWebView.loadUrl("file:///android_asset/demo.html");       //  可以利用这个方法直接webview调用javascript




  • public boolean onKeyDown(int keyCode, KeyEvent event) {       
  •         if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {       
  •             mWebView.goBack();       ////返回到上个界面
  •                    return true;       
  •         }       
  •         return super.onKeyDown(keyCode, event);       
  •     } 

  • <html>       
  •         <mce:script language="javascript"><!--     
  •        
  •                 function wave() {       
  •                     document.getElementById("droid").src="android_waving.png";       
  •                 }       
  •              
  • // --></mce:script>       
  •         <body>       
  •             <a onClick="window.demo.clickOnAndroid()">       ////javascript调用java中的方法demo是 在addjavascriptInterface中设置的
  •                                 <img id="droid" src="android_normal.png" mce_src="android_normal.png"/><br>       
  •                                 Click me!       
  •             </a>       
  •         </body>       
  • </html>      



    
  • 0 0
    原创粉丝点击