Android WebView插入JavaScript

有这样的需求,webview从网上加载一些网页,是别人的网页,我们只需要网页中的一部分数据,但是不可能叫别人修改了网页,所以只有自己动手,一种方法是自己把网页当字符串取到,分析修改后加入webview显示,但是这方法似乎有点麻烦。

讲另外的思路,网页的数据是固定的,直接把网页url丢进webview加载,但是没看到有webview方法可以截获掉的,不过可以往网页中插入一些javascript来屏蔽不需要显示的内容。

例子:用百度网页转换http://gate.baidu.com/ 取到的网页,活生生被百度在前面和后面各插入了一个div,很讨厌这样,所以要把它并比掉,前面的div叫class="trans",后面是class="footer"。我们需要的是在网页插入javascript,把这两个div设为不可见。代码如下:

[java] view plaincopy

  1. public class Test {
  2. private static final String BAIDU_URL = "http://gate.baidu.com/tc?from=opentc&src=";
  3. private String willLoadUrl = "http://www.google.com.hk";
  4. private WebView webView;
  5. //这是要注入的javascript,注意:前面的“javascript:”是必须的,后面就是要注入的语句
  6. private static final String insertJavaScript = "javascript:window.onload=function(){ document.getElementsByClassName(‘footer‘)[0].style.display=‘none‘; document.getElementsByClassName(‘trans‘)[0].style.display=‘none‘;}";
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.testlistview);
  11. webView = (WebView) findViewById(R.id.webview);
  12. //先启用JavaScript
  13. webView.getSettings().setJavaScriptEnabled(true);
  14. //webview中需要注入javascript屏蔽百度的头和尾部。设置WebViewClient
  15. webView.setWebViewClient(new myWebViewClient());
  16. //这是加载网页的URL,真正的网页
  17. loadWebpage(BAIDU_URL);
  18. }
  19. private void loadWebpage(String url) {
  20. webView.loadUrl(url);
  21. }
  22. /**
  23. * 经过测试,在onPageFinished中注入脚本有时候不能调用JavaScript。在onPageStarted注入才可以。
  24. */
  25. public class myWebViewClient extends WebViewClient {
  26. @Override
  27. public void onPageFinished(WebView view, String url) {
  28. super.onPageFinished(view, url);
  29. Log.d("hehe", "onPageFinished execute");
  30. }
  31. @Override
  32. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  33. super.onPageStarted(view, url, favicon);
  34. //注入
  35. view.loadUrl(insertJavaScript);
  36. Log.d("hehe", "onPageStarted execute");
  37. }
  38. }
  39. }

网上很多都是在OnpageFinished的时候注入,但是有时候失效,不知道为什么,所以改成了onPageStarted

时间: 2024-10-10 17:00:54

Android WebView插入JavaScript的相关文章

Android WebView与JavaScript交互操作(Demo)

应用场景: 为了使Android移动项目能够在较短的时间内完成开发,同时降低技术人员开发的成本投入,往往会采用Hybrid APP的开发模式.相关Hybrid APP(混合型应用)参看:http://blog.csdn.net/mahoking/article/details/30235243 采用这种模式,为了解决更好的用户体验,可访问本地资源的能力.势必需要了解与掌握Android(java)与JavaScript之间的交互.相互调用操作的方法与技术. [转载使用,请注明出处:http://

Android WebView与JavaScript交互实现Web App

当我们去开发一个基于web的android app时,我们第一须要处理的就是与JavaScript的交互问题.Android须要做的事情就是开放某些特定的接口供web里的JavaScript调用,能够开放弹出框功能,Toast,界面跳转等等.这样我们的web视图以假乱真的当成Android的原生界面.而这套web代码又能够嵌入iPhone的client中.也就是说Android和IOSclient不过提供一个共web使用的框架,业务都由web端处理.这岂不是开发一次.可处处执行.然而这一切都是后

Android Webview 和Javascript交互,实现Android和JavaScript相互调用

在Android的开发过程中.遇到一个新需求.那就是让Java代码和Javascript代码进行交互.在IOS中实现起来很麻烦.而在Android中相对来说容易多了.Android对这种交互进行了很好的封装.我们可以很简单的用Java代码调用WebView中的js函数.也可以用WebView中的js来调用Android应用中的Java代码. 案例主要包含了: Html中调用Android方法 Android调用JS方法无参数 Android调用JS方法有参数 Android调用JS方法有参数且有

android webview和 javascript 进行交互

HTML5进行app开发具有开发快,跨平台等优点,但是当客户需要访问照相机或者调用摄像头等硬件的时候,H5就会有限制,必须要调用原生方法进行设备访问.下面简要介绍JS和原生方法互相调用的方法: 1 在webview的进行配置,首先支持JS和JS接口访问: 这里JSHook是一个Java类: 这里只是演示JS可以调用硬件,但并未实现如何将拍照的照片上传到服务器. 2 JS方法编写 上面注册的JSHook对象,再JS中对于kz,根结点都是window,即window.kz.QR() 就是webvie

Android:WebView与Javascript交互(相互调用参数、传值)

Android中可以使用WebView加载网页,同时Android端的java代码可以与网页上的javascript代码之间相互调用. 效果图: (一)Android部分: 布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_widt

WebView与JavaScript交互--Android

转载请注明出处:  http://blog.csdn.net/forwardyzk/article/details/46819925 在工作中,有一个这种需求,须要用到WebView与javascript进行交互,以下我们就通过一个简单的需求来介绍. 先看一下效果图: 需求: 1.点击一个button进入一个载入WebView的界面,假设此界面须要分享此界面到其它平台,那么就在当前界面展示"分享"button,假设不须要分享,那么就不展示"分享"button. 2.

Android WebView JavaScript交互

今天介绍一下,Android中Webview与JavaScript的交互,首先是在布局文件里添加webview控件: [html] view plaincopy <WebView android:id="@+id/webview" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 然后是在manifest里添加权限: [html] vie

(五) Android中WebView跟JavaScript中的交互

在 android 的应用程序中,可以直接调用 WebView 中的 javascript 代码,而 WebView 中的 javascript 代码,也可以去调用 ANDROID 应用程序(也就是 JAVA 部分的代码).下面举例说明之: 1.JAVASCRIPT 脚本调用 android 程序 要在 WebView 中,调用 addJavascriptInterface(OBJ,interfacename)其中,obj 为和 javascript 通信的应用程序,interfacename

Android中webview跟JAVASCRIPT中的交互

在android的应用程序中,可以直接调用webview中的javascript代码,而webview中的javascript代码,也可以去调用ANDROID应用程序(也就是JAVA部分的代码).下面举例说明之: 1 JAVASCRIPT脚本调用android程序    要在webview中,调用addJavascriptInterface(OBJ,interfacename) 其中,obj为和javascript通信的应用程序,interfacename为提供给JAVASCRIPT调用的 名称