js向webview发送URL

原创 2016年06月01日 13:34:51

1、

在js中通过

window.location.href="MDWebBridge://PushWebView?url="+EncodeUtf8(_url_)+"&title="+EncodeUtf8(_title_);

向webview发送URL,其中MDWebBridge、PushWebView都是自定义的,只需保证js与native一致即可。

2、必须转码,通过EncodeUtrf8().

// 字符串转换utf-8  
    function EncodeUtf8(s1) {
        // escape函数用于对除英文字母外的字符进行编码。如“Visit W3School!”->"Visit%20W3School%21"  
        var s = escape(s1);
        var sa = s.split("%"); //sa[1]=u6211  
        var retV = "";
        if (sa[0] != "") {
            retV = sa[0];
        }
        for (var i = 1; i < sa.length; i++) {
            if (sa[i].substring(0, 1) == "u") {
                retV += Hex2Utf8(Str2Hex(sa[i].substring(1, 5)));
                if (sa[i].length >= 6) {
                    retV += sa[i].substring(5);
                }
            } else retV += "%" + sa[i];
        }
        return retV;
    };

    function Str2Hex(s) {
        var c = "";
        var n;
        var ss = "0123456789ABCDEF";
        var digS = "";
        for (var i = 0; i < s.length; i++) {
            c = s.charAt(i);
            n = ss.indexOf(c);
            digS += Dec2Dig(eval(n));

        }
        //return value;  
        return digS;
    };

    function Dec2Dig(n1) {
        var s = "";
        var n2 = 0;
        for (var i = 0; i < 4; i++) {
            n2 = Math.pow(2, 3 - i);
            if (n1 >= n2) {
                s += '1';
                n1 = n1 - n2;
            } else
                s += '0';

        }
        return s;

    };

    function Dig2Dec(s) {
        var retV = 0;
        if (s.length == 4) {
            for (var i = 0; i < 4; i++) {
                retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);
            }
            return retV;
        }
        return -1;
    };

    function Hex2Utf8(s) {
        var retS = "";
        var tempS = "";
        var ss = "";
        if (s.length == 16) {
            tempS = "1110" + s.substring(0, 4);
            tempS += "10" + s.substring(4, 10);
            tempS += "10" + s.substring(10, 16);
            var sss = "0123456789ABCDEF";
            for (var i = 0; i < 3; i++) {
                retS += "%";
                ss = tempS.substring(i * 8, (eval(i) + 1) * 8);

                retS += sss.charAt(Dig2Dec(ss.substring(0, 4)));
                retS += sss.charAt(Dig2Dec(ss.substring(4, 8)));
            }
            return retS;
        }
        return "";
    };
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android WebView与JS交互及消息处理

前一段时间做公司的项目,涉及到WebView与JS之间的通信,于是在网上查了点资料研究了一下下。   一、WebView与JS交互     1.JS调用本地方法     这个功能的实现还...
  • stephenzcl
  • stephenzcl
  • 2014年04月11日 17:20
  • 2462

java 向指定URL发送GET、POST方法的请求

自己用的java模拟发送get、post请求的设置,肯定可以用 /** * 向指定URL发送GET方法的请求 * * @param url * ...
  • qq383692862
  • qq383692862
  • 2015年03月05日 12:14
  • 793

向指定服务器URL 发送POST方法的请求并用JSON表示

内容:首先服务器返回的是JSON数组,但是利用URL读取后其实返回的都是String,所以我们还要转换为JSON数组,POST的传值是参考网上的。 public class HttpRequest {...
  • u011345136
  • u011345136
  • 2015年04月22日 23:10
  • 2745

Android WebView注入js中带有URL-encode字符时报错问题

在hybird-APP开发中,经常会用到的WebView.loadUrl("javascript:+js")的方式来向webview注入js。 在最近的项目中发现注入的js中带有部分已经经过Url ...
  • qq_18755755
  • qq_18755755
  • 2016年09月23日 17:44
  • 392

android webview加载URL&&允许JS

//允许jS helpCenterWv.getSettings().setJavaScriptEnabled(true); helpCenterWv.loadUrl(url);
  • u012885461
  • u012885461
  • 2015年12月04日 10:23
  • 1633

android webview一篇文章全面了解(基本使用,url拦截,js跟java交互)

1.前言最近几年混合应用越来越流行,及一部分功能用原生代码开发,一部分功能用html5实现。那什么时候用原生什么时候用网页呢?很多人第一反应就是经常变化的页面用网页开发,避免经常发包,不全对。其实因为...
  • dfskhgalshgkajghljgh
  • dfskhgalshgkajghljgh
  • 2016年11月22日 19:23
  • 5059

利用js实现前后台传送Json方法

无论使用什么框架都存在着从controller向Html页面或者jsp页面传递数据的问题,最常用的方式是传递Json字符串。以前对这块知识有些模糊,现在整理一下。 【Jquery基本方法】 ...
  • u012466304
  • u012466304
  • 2017年02月19日 16:58
  • 5533

java 向指定 URL 发送Get\Post方法的请求

//java 向指定 URL 发送Get\Post方法的请求 package wzh.Http; import java.io.BufferedReader; import java.io.I...
  • liyintaoliuyun
  • liyintaoliuyun
  • 2016年04月25日 10:19
  • 375

Android开发中WebView与原生JS的数据交互详解

Android开发中WebView与原生JS的数据交互详解 www.111cn.net 编辑:edit02_lz 来源:转载 分本文来分享详细的在Android开发中,如何利用WebV...
  • qq_25149477
  • qq_25149477
  • 2015年07月03日 17:56
  • 1151

iOS下JS与OC互相调用(一)--UIWebView 拦截URL

最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换。顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊。今天介绍UIWebView拦截URL的方式来实现JS...
  • u011619283
  • u011619283
  • 2016年08月06日 13:59
  • 5076
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js向webview发送URL
举报原因:
原因补充:

(最多只允许输入30个字)