精华内容
下载资源
问答
  • webview获取网页源代码分两种,一种是js执行前,一种是js执行后 1.js执行前 调用getHtml即可 public static String getHtml(String path) throws Exception { // 通过网络地址创建URL对象 URL url = new URL(path...

    webview获取网页源代码分两种,一种是js执行前,一种是js执行后

    1.js执行前

    调用getHtml即可
    public static String getHtml(String path) throws Exception {
        // 通过网络地址创建URL对象
        URL url = new URL(path);
        // 根据URL
        // 打开连接,URL.openConnection函数会根据URL的类型,返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设定URL的请求类别,有POSTGET 两类
        conn.setRequestMethod("GET");
        //设置从主机读取数据超时(单位:毫秒)
        conn.setConnectTimeout(5000);
        //设置连接主机超时(单位:毫秒)
        conn.setReadTimeout(5000);
        // 通过打开的连接读取的输入流,获取html数据
        InputStream inStream = conn.getInputStream();
        // 得到html的二进制数据
        byte[] data = readInputStream(inStream);
        // 是用指定的字符集解码指定的字节数组构造一个新的字符串
        String html = new String(data, "utf-8");
        return html;
    }
    
    
    public static byte[] readInputStream(InputStream inStream) throws Exception {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = 0;
        while ((len = inStream.read(buffer)) != -1) {
            outStream.write(buffer, 0, len);
        }
        inStream.close();
        return outStream.toByteArray();
    }
    

    2.js执行后

    启用js
    settings.setJavaScriptEnabled(true); 
    定义接口
    private final class InJavaScriptLocalObj {
        public void showSource(String html2) {
            html = html2;
        }
    }
    webview添加自定义接口
    webView.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj");
    
    添加webviewClient回调,执行指定js
    private WebViewClient webViewClient = new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);       
            view.loadUrl("javascript:window.local_obj.showSource('<head>'+" +
                    "document.getElementsByTagName('html')[0].innerHTML+'</head>');");        
        }
    在需要获取网页源代码的地方后去html变量即可

    展开全文
  • webview获取标签内容

    2016-06-13 18:06:36
    webView执行js代码获取标签内容
  • 在此假设的基础上,您需要执行以下操作使用JavascriptInterfacepublic class WebVCamBridgeInterface {/*** Javacript function to start native camera*/@JavascriptInterfacepublic void tak...

    如果我正确理解你的问题

    你想点击网页上的按钮(html)打开Android设备相机?

    在此假设的基础上,

    您需要执行以下操作

    使用JavascriptInterface

    public class WebVCamBridgeInterface {

    /**

    * Javacript function to start native camera

    */

    @JavascriptInterface

    public void takePicture() {

    captureImage();

    }

    /**

    * Javascript function to start the GalleryActivity for user to choose the image to be uploaded

    */

    @JavascriptInterface

    public void showPictures() {

    Intent intent = new Intent(LandingActivity.this, GalleryActivity.class);

    startActivityForResult(intent, Constants.REQ_GALLERY);

    }

    }

    将JSinterface添加到您的webview中

    webView.addJavascriptInterface(new WebVCamBridgeInterface (), "AndroidDevice");

    在您的html /网页中有以下JS

    function takePicture() {

    if(typeof AndroidDevice !== "undefined"){

    AndroidDevice.takePicture();

    }

    }

    function showPictures() {

    if(typeof AndroidDevice !== "undefined"){

    AndroidDevice.showPictures();

    }

    }

    function imageData(data){

    document.getElementById('displayImage').setAttribute( 'src', 'data:image/png;base64,'+data );

    if(typeof AndroidDevice !== "undefined"){

    }

    }

    您也可以参考这些教程

    干杯!.

    展开全文
  • webview里并没有提供直接获取html源码的api,所以只能直接按照html的方式进行获取内容 操作原理:html中获取标签内容 ... 而且android中就必须要...1、webview必须要开启js交互,不能js交互调用就会失效 mWebView.g...

    webview里并没有提供直接获取html源码的api,所以只能直接按照html的方式进行获取内容

    操作原理:html中获取标签内容

    document.getElementsByTagName('html')[0].innerHTML

    而且android中就必须要进行js交互调用获取内容

    操作如下:

    1、webview必须要开启js交互,不能js交互调用就会失效

    mWebView.getSettings().setJavaScriptEnabled(true);

    2、必须要往html里注入一个交互操作接口对象,否则js里就不能调起android的本地方法

    mWebView.addJavascriptInterface(new JavaScriptLocalObj(), "local_obj");
    public class JavaScriptLocalObj {
        @JavascriptInterface
        public void showSource(String html) {
    
            LogUtils.d("HTML", html);
    
        }
    }

    3、在页面加载完成以后,进行调用js的方法,让js方式执行,并且获取到html内容并且回调本地的showSource返回内容

    mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:window.local_obj.showSource('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
        }
    });

     

    注意:如果出现没有调用到JavaScriptLocalObj的showSource方法,说明就是交互失效了,也就是webview还没有开启交互能力,必须要 mWebView.getSettings().setJavaScriptEnabled(true);方可执行

    展开全文
  • android-webview执行js

    2017-01-20 16:12:04
    1.webview执行js AppWebView//查找出来的控件 AppWebView.setWebViewClient(new WebViewClient(){ //然后实现shouldOverrideUrlLoading@Override public boolean shouldOverrideUrlLoading(WebView view, String...

    1.webview执行js
      AppWebView//查找出来的控件
    
    AppWebView.setWebViewClient(new WebViewClient(){
       
    //然后实现shouldOverrideUrlLoading
    @Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
    	//让服务端,在点击某web上面的按钮,或者其他。跳转时,作为判断拦截.举例,服务端以
    	//http://www.123456.com/?jump_type= 作为一个tag标记
    	实例: 
    	if(url.contains("http://www.123456.com/?jump_type=")){
    		//这里拦截主要是获取uri传输过来的值,只需要字符串截取就可以了
    		
    		String finalString=url.substring(url.lastIndexOf("=") + 1);

    		sendInfoToJs(finalString)
    }
        		  return true;  	
     	}	
    });
    //在java中调用js代码:0未收藏-1收藏
    public void sendInfoToJs(int collect) {
       //调用js中的函数:showInfoFromJava(msg)
       mAppWebView.loadUrl("javascript:shoucang(" + collect + ")");
    }

    展开全文
  • 1 前言最近做一个项目,需要webview获取网页中input的内容,把知识整理一下,做个记录,也希望对大家有所帮助。2 获取html内容2.1 初始化webviewwebview.getSettings().setJavaScriptEnabled(true); webview....
  • 背景:借助现有接口技术,js可以执行原生java代码中的方法,可以得到方法的返回值,可以让原生java代码在主线...但是借助该接口,原生java代码,采用webview.loadUrl("javascript: JsFunctionName"),只能做到执行j
  • webview获取网页title

    2017-02-05 17:46:43
    序言今天做项目的时候,老大让我把之前做的webview打开网页的功能修改一下,说是要动态的获取网页的标题,然后显示在我们自己app的标题栏上,然后我就屁颠屁颠的跑去看webview的源码,看看有没有获取标题这个方法。...
  • 2. 将java类对象注入到webViewjs中(为null时将被忽略),这样就可以通过webView中的js执行java代码了。 3. 重写WebViewClient的onPageFinished方法,在onPageFinished中加载一段js代码调用本地方法。 ...
  • 如果WebView的大小比较大,横屏状态,然后使用JavaScript去绘制动画,发现,js会被延迟调用,就是,比如当前我从长连接获取到数据,调用绘制100次,这100次 不是立刻绘制,显示的,往往会延迟几秒甚至几十秒才执行。...
  • JS执行完方法后通过发起伪HTTP链接(并不是真正HTTP,而是为了webview的onLoadResource方法能够捕获);webview在 onLoadResource中去捕获这种伪HTTP,根据事先定义好的URL格式,去获得已定义好的JS方法的返回值 ...
  • 通过自定义webview实现类似IOS webview中的stringByEvaluatingJavaScriptFromString方法获取js中的文本简介,代码如下:public class MyWebView extends WebView { public MyWebView(Context context) { super...
  • android webView 获取网页数据

    千次阅读 2013-10-28 11:21:15
    public class WebViewActivity extends Activity { Button bt; WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); webView = new We
  • iOS webView获取html内容

    千次阅读 2016-06-17 16:17:47
    UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌 入页面中,通过这个方法我们可以在iOS中与UIWebView中的网页元素交互。  ...
  • Android webView调用js方法非常easy, webView.loadUrl("javascrpt:yourFunction()"); 可是此方法没有办法获取返回结果 此时仅仅能通过调用alert方法,然后通过重写WebChromClient中的onJsAlert方法,来...
  • Android webview数据获取 webview抓取

    千次阅读 2020-03-10 11:02:40
    总结下 Android下 webview的数据获取、抓取。 先说总结的情况 方法一:给webview setWebViewClient,然后重写shouldInterceptRequest,获取请求参数,自己发起请求,返回WebResourceResponse。 方法二:...
  • Android WebView远程执行代码漏洞浅析

    千次阅读 2015-12-22 14:01:37
    在过去的一段时间里,WebView远程代码执行漏洞可以说是横扫了一大批的Android App,查询Wooyun平台可以得到大致的情况,鉴于很多存在漏洞的App并没有披露,因此WebVeiw远程执行代码漏洞的影响程度会更大。...
  • Android:你要的WebViewJS 交互方式 都在这里了

    万次阅读 多人点赞 2017-03-22 09:19:45
    前言 现在很多App里都内置了Web网页(Hybrid App),比如说很多电商平台,淘宝...今天我将全面介绍Android通过WebViewJS交互的全面方式 阅读本文前请先阅读:Android开发:最全面、最易懂的Webview详解 ...
  • 主要介绍了android webview中使用Java调用JavaScript方法并获取返回值,本文直接给出代码示例,需要的朋友可以参考下
  • 在Android项目中我们或多或少会涉及到与js交互的问题,这其中WebView是必须掌握的控件,今天主要说说我们通过WebView调用js方法,然后如何很好的获取返回值。这里我总结了三种方式,大家可根据需求选择。 一、...
  • 转载地址:...在过去的一段时间里,WebView远程代码执行漏洞可以说是横扫了一大批的Android App,查询Wooyun平台可以得到大致的情况,鉴于很多存在漏洞的App并没有披
  • Android WebView 调用JS方法获取返回值

    千次阅读 2018-05-22 19:55:35
    如果你项目的minSdkVersion 为4.4 以上,那么你可以直接通过WebView的evaluateJavascript()方法 拿到JS方法的返回值 mWebView.evaluateJavascript("javascript:JSMethod()", new ValueCallback<String>...
  • 很多关于objc 与 js 交互的文章都比较适用于 mac开发,iOS的webview 还是有所不一样, 参考:http://blog.sina.com.cn/s/blog_693de6100102vhuh.html 本文提供了一个很好解决UIWebView内js和objc 交互的
  • 在基于web浏览器的台式机上能获取期望的输出值,但是当用android webview执行相同的代码却什么也不能输出。为什么啊? 贴出我的html代码和android webview代码: WebView webview = (WebView) this.findViewById...
  • 1 前言最近做一个项目,需要webview获取网页中input的内容,把知识整理一下,做个记录,也希望对大家有所帮助。2 获取html内容2.1 初始化webviewwebview.getSettings().setJavaScriptEnabled(true);webview....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,835
精华内容 5,534
关键字:

webview获取执行js