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一篇文章全面了解(基本使用,url拦截,js跟java交互)

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

Android WebView - 全面总结(概述、捕获url、js交互、小技巧、内存泄漏、缓存机制)

前言结合H5页面开发的App日渐多了起来,而WebView正是Html与Native的纽带,今天就借着一个新的项目需求顺便做一下WebView的知识总结,如有错漏,恳请大家指点指点。(项目需求:将适配...
  • Goo_x
  • Goo_x
  • 2016-07-29 16:05
  • 2092

ios与js交互,获取webview完整url,title,获取元素并赋值跳转

转载自:  http://blog.sina.com.cn/s/blog_6ae8b50d01011rri.html

Android 拦截WebView加载URL,控制其加载CSS、JS资源

绪论最近在项目中有了这样一个需求,我们都知道WebView加载网页可以缓存,但是web端想让客服端根据需求来缓存网页,也就是说web端在设置了http响应头,我根据这个头来拦截WebView加载网页,...
  • lyhhj
  • lyhhj
  • 2015-10-30 21:47
  • 7188

Android的webview加载本地html、assert内html和网络URL&&& JS与移动端webview的相互交互

Android的webview加载本地html、assert内html和网络URL&&& JS与移动端webview的相互交互

WebView使用URL

  • 2012-08-28 17:21
  • 46KB
  • 下载

android webview 加载带视频的URL

问题描述:    webview打开带有视频的链接,视频无法播放 视频播放过程中返回结束掉界面,视频声音依旧播放,不会暂停     解决方案:   播放视频,当中一些方法...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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