企业微信的iPhone无法调用chooseImage方法,但是安卓正常运行
代码贴了 最简单的一段,图示是效果图,点击以后会调用chooseImage拍照。安卓OK,苹果不行。
用vconsole查看的报错如下TypeError: undefined is not a function (near '...a.oldWXJSObj.invoke...')

解决方案 »

  1.   

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
        <title>前端的测试</title>
        <link rel="stylesheet" type="text/css" href="web/res/fontawesome/css/font-awesome.min.css">
        <link rel="stylesheet" type="text/css" href="webmain/css/rui.css">
        <link rel="stylesheet" type="text/css" href="mode/weui/weui.min.css"/>
        <link rel="stylesheet" href="weui/css/jquery-weui.css">
        <link rel="stylesheet" href="weui/lib/weui.css">    <script type="text/javascript" src="weui/lib/jquery-2.1.4.js"></script>
        <script type="text/javascript" src="js/js.js"></script>
        <script type="text/javascript" src="js/jswx.js"></script>
        <script type="text/javascript" src="js/base64-min.js"></script>
        <!--<script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&libraries=convertor,geometry"></script>-->
        <script src="weui/js/jquery-weui.js" type="text/javascript" charset="utf-8" ></script>
        <script src="weui/js/vconsole.min.js" type="text/javascript" charset="utf-8"></script>
        <script>
            var vConsole = new VConsole();
            var kqrs = <?=json_encode($kqrs);?>,isgzh = <?=$isgzh?>;
            var iswcdkid = <?=json_encode($iswcdkid);?>;
            js.servernow = '<?=$rock->now?>';
            var infoWin,er,circle;
            var label='',accuracy=0,latitude='',longitude='',kqjuli=-1,addbo = true;
            apiready = function(){
                initbodyss()
            }
            function initbody(){
                if(js.request('ftype')!='app')initbodyss();
            }
            function initbodyss(){
                js.getsplit();
                js.jssdkwixin(['openLocation','getLocation','chooseImage','uploadImage']);
                if(isgzh==1){
                    js.jssdkwxgzh();
                }else{
                    js.jssdkwixin();
                }
                showtimessabc();
                var lata = js.getoption('latlongedu','39.908254886997774,116.39744281768799').split(',');
                if(!lata[2])lata[2]=16;
                scale  = parseFloat(lata[2]);
                var center = new qq.maps.LatLng(parseFloat(lata[0]), parseFloat(lata[1]));
                map = new qq.maps.Map(document.getElementById('container'),{
                    center: center,
                    zoom: scale
                });
                if(kqrs){
                    var enddt = new qq.maps.LatLng(parseFloat(kqrs.location_x), parseFloat(kqrs.location_y));
                    new qq.maps.Marker({
                        map: map,
                        position:enddt
                    });
                }
                geocoder = new qq.maps.Geocoder({
                    complete : function(result){
                        js.msg();
                        addbo  = true;
                        scale  = map.getZoom();
                        js.setoption('latlongedu',''+latitude+','+longitude+','+scale+'');
                        clearTimeout(dwtimeer);
                        dwbool = false;
                        var center  = result.detail.location;
                        map.setCenter(center);
                        var address = result.detail.address;
                        var dzarr  = result.detail.addressComponents;
                        address  = ''+dzarr.province+''+dzarr.city+''+dzarr.district+''+dzarr.street+'';
                        if(dzarr.streetnumber)address+=dzarr.streetnumber;
                        label  = address+'';
                        if(accuracy>0)address+='(精确'+accuracy+'米)';
                        showinfo(center ,accuracy, '定位成功<br>地址:'+address+'');
                        if(kqrs){
                            kqjuli = parseInt(qq.maps.geometry.spherical.computeDistanceBetween(center, enddt));
                        }
                        var slju = parseFloat(kqrs.precision);
                        if(kqjuli<=slju || iswcdkid!="false"){
                            $(".btns").removeClass('btn_disabled');
                            $(".errdk").siblings('span').css({"color": '#999999'});
                            showinfo(center ,accuracy, '定位成功,距离('+kqjuli+')米。<br>地址:'+address+'');                    }
                        if(kqjuli>slju && iswcdkid=="false" )
                        {
                            showinfo(center ,accuracy, '定位成功,距离('+kqjuli+')米,考勤设置误差不能超过('+slju+')米。请勾选<font color=#FF0000>[异常打卡]</font>选项。<br>地址:'+address+'');
                        }
                    }
                });
            }
            function showtimessabc(){
                var dt = js.serverdt('H:i:s');
                $('#timess').html(dt);
                setTimeout('showtimessabc()',1000);
            }
            js.jssdkcall  = function(bo){
                dingweidak();
            }
            function showinfo(center ,fw, str){
                if(!infoWin)infoWin = new qq.maps.InfoWindow({
                    map: map
                });
                infoWin.open();
                infoWin.setContent(str);
                infoWin.setPosition(center);            if(!er)er= new qq.maps.Marker({
                    map: map
                });
                er.setPosition(center);
                if(!circle)circle=new qq.maps.Circle({
                    map:map,
                    strokeWeight:1
                });
                circle.setCenter(center);
                circle.setRadius(parseFloat(fw));
            }
            var dwbool=false,dwtimeer;
            function dingweidak(){
                if(dwbool)return;
                dwbool = true;
                chaoshi();
                if(js.jssdkstate != 1){
                    htmldingw();
                    return;
                }
                var msg = '微信定位中...';
                if(js.isqywx)msg='企业微信定位中...';
                js.msg('wait',msg);
                wx.getLocation({
                    type: 'gcj02',
                    success: function (res){
                        js.setmsg('');
                        clearTimeout(dwtimeer);
                        latitude  = res.latitude;
                        longitude  = res.longitude;
                        scale = map.getZoom();
                        accuracy  = parseFloat(res.accuracy);
                        js.msg('wait','定位成功,获取位置信息...');
                        var center  = new qq.maps.LatLng(latitude, longitude);
                        geocoder.getAddress(center);
                    },
                    error:function(){
                        js.msg('msg','微信定位失败,请重试', 0,function(){
                            $(".errdk").removeClass('defnot');
                        });
                        js.jssdkstate = 2;
                        clearTimeout(dwtimeer);
                    }
                });        }
            function chaoshi(){
                clearTimeout(dwtimeer);
                dwtimeer = setTimeout(function(){
                    js.msg('msg','定位超时,请确认手机[位置信息]开启后重新定位', 0, function(){
                        $(".errdk").removeClass('defnot');
                    });
                    js.jssdkstate = 2;
                    dwbool=false;
                },20*1000);
            }
            function htmldingw(){
                if(api.appName){
                    baidingwei();
                    return;
                }
                if(!navigator.geolocation){
                    js.msg('msg','不支持浏览器定位', 0, function(){
                        $(".errdk").removeClass('defnot');
                    });
                    clearTimeout(dwtimeer);
                }else{
                    js.msg('wait','浏览器定位中...');
                    navigator.geolocation.getCurrentPosition(showPosition,showError,{
                        enableHighAccuracy: true,
                        timeout: 19000,
                        maximumAge: 3000
                    });
                }
            }
            function showError(error){
                clearTimeout(dwtimeer);dwbool=false;
                js.setmsg('');
                var msg='无法定位';
                switch(error.code){
                    case error.PERMISSION_DENIED:
                        msg="用户拒绝对获取地理位置的请求。"
                        break;
                    case error.POSITION_UNAVAILABLE:
                        msg="位置信息是不可用的。"
                        break;
                    case error.TIMEOUT:
                        msg="请求用户地理位置超时。"
                        break;
                    case error.UNKNOWN_ERROR:
                        msg="未知错误。"
                        break;
                }
                js.msg('msg', msg, 0, function(){
                    $(".errdk").removeClass('defnot');
                });        }
        </script>
        <style>
            .relogin{position:absolute;right:10px;top:40px;width:40px;height:40px; line-height: 40px; background:rgba(0,0,0,0.5);z-index:1;border-radius:50%;font-size:14px;color:white;text-align:center}
            .record{position:absolute;right:10px;bottom:10px;width:40px;height:40px; line-height: 40px; background:rgba(0,0,0,0.5);z-index:1;border-radius:50%;font-size:14px;color:white;text-align:center}
            .record:active{background:rgba(0,0,0,0.8)}
            a.relogin:link,a.relogin:visited,
            a.record:link,a.record:visited{color: #ffffff;}
            a:link, a:visited{ color: #454545; }
            .btn_disabled{opacity: 0.4;}
            .status{
                width: 54px;
                background: #dedede;
                border-radius: 4px;
                padding: 2px 4px;
                text-align: center;
                margin-left: 10px;
            }
            .atype{
                background: #dedede;
                border-radius: 4px;
                padding: 2px 4px;
                margin-right: 10px;
            }
        </style>
    </head>
    <body>
    <div>    <div style="width:100%;height:340px;position:relative">
            <div id="container" style="position:absolute;width:100%;height:340px;"></div>
            <a class="relogin" href="?m=ying&d=we&a=relogin"><i class="icon-refresh" style='display: block; margin-top: 10px; font-size: 20px;'></i></a>
            <a class="record" href="?d=we&m=ying&a=locationed"><i class="icon-calendar" style='display: block; margin-top: 10px; font-size: 20px;'></i></a>
        </div>
        <div style="padding:10px">
            <table width="100%"><tr>
                <td width="30%"></td>
                <td width="15" nowrap></td>
                <td width="65%"><a type="button" href="javascript:void(0);" id="fuckimg" class="weui_btn weui_
      

  2.   

    js.jssdkwixin(['openLocation','getLocation','chooseImage','uploadImage']);是这里出错吧?你的js.js是什么东东,要看jssdkwixin这个方法你是怎么写的。
      

  3.   

    wx.config({
        beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: '', // 必填,企业微信的corpID
        timestamp: , // 必填,生成签名的时间戳
        nonceStr: '', // 必填,生成签名的随机串
        signature: '',// 必填,签名,见附录1
        jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    });楼主你在config部分加上beta:true参数就解决了