本地js页面

本文介绍了一个使用JavaScript调用Objective-C方法的例子。通过网页输入字段获取文本内容,并将其编码为UTF-8格式,最后通过objc协议发起请求。文章包含完整的JavaScript函数实现,展示了如何进行字符串编码及调用本地应用的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<html>
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="content-type">
            <title>js调用oc</title>
            <script type="text/javaScript">
                function testClick(cmd)
                {
                    //var str1 = ducument.getElementById("text1").value;
                    //var str2 = ducument.getElementById("text2").value;
                    var str1=document.getElementById("text1").value;
                    var str2=document.getElementById("text2").value;
                    //var str1="我来自ios苹果"; //%25u6211%25u6765%25u81EAios%25u82F9%25u679C
                    //var str2="我来自earth地球";//%25u6211%25u6765%25u81EAearth%25u5730%25u7403
                    document.write(Date());
                    window.location.href="objc://"+cmd+":/"+EncodeUtf8(str1)+":/"+EncodeUtf8(str2);
                }
            
            // 字符串转换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 "";
            }
            </script>
            </head>
    <body>
        <p><input type="text" id="text1" value="我来自ios苹果"/></p>
        <p><input type="text" id="text2" value="我来自earth地球"/></p>
        <p><input type="button" id="enter" value="enter" onclick="testClick('getParam1:withParam2:');"/></p>
    </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值