0

第二次更新:由于没有修复 Safari 和其他一些奇怪的行为,我决定使用这个选择为 Safari 用户创建所有新的无聊内容(基本上放弃了 Safari 的脚本)......

<?php if($detect->version('Safari')) {  ?>
$(function() {
    /* create second option because Safari sucks? */
    $("#gotorep").remove();
    $("#entersite").remove();
    $("#entersite2").css({'display':'inline'});
});
<?php } elseif($detect->isMobile()) {  ?>
   function startfunc() {
      if(navigator.geolocation) {
.
.
.

错误更新(已修复,已删除):我在 Safari 中的错误是 35772ReferenceError:找不到变量:在此位置失败...

 $(function() {
    if(navigator && navigator.geolocation) {
        var fallback = setTimeout(function() { fail('10 seconds expired'); }, 10000);
***http://devv.referadiabetic.com/:35772ReferenceError: Can't find variable: fail
        navigator.geolocation.getCurrentPosition(
                function (pos) {
                    clearTimeout(fallback);

原始问题:我可以让它在除 Safari 之外的其他移动设备/浏览器中工作。在 iphone 上它失败了,所以用 ! 反转了 if 选择。并在具有相同问题的 Safari 桌面浏览器中进行了测试,一旦我同意就不会返回我的数据。这是我现在正在使用的代码块......

<?php if(!($detect->isMobile())) {  ?>
$(function() {
    if(navigator && navigator.geolocation) {
        var fallback = setTimeout(function() { fail('10 seconds expired'); }, 10000);
        navigator.geolocation.getCurrentPosition(
                function (pos) {
                    clearTimeout(fallback);
                    var point = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
                    new google.maps.Geocoder().geocode({'latLng': point}, function (res, status) {
                        if(status == google.maps.GeocoderStatus.OK && typeof res[0] !== 'undefined') {
                            var zip = res[0].formatted_address.match(/,\s\w{2}\s(\d{5})/);
                            if(zip) {
                                var zipcodepassed = zip[1];
                                $("#em").html(zipcodepassed);
                                var reps = reps_load;
                                var ads_repList_URLtoFullName = ads_repList_URLtoFullName_load;
                                var rek = ads_repList_URLtoFullName;
                                var rep = reps[zipcodepassed];
                                    if (rep == undefined || rep == null || rep == "") {
                                            $(function() {
                                                $("#gotorep").remove();
                                                $("#entersite").remove();
                                                $("#entersite2").css({'display':'inline'});
                                            });
                                    }
                                var repname = rek[rep]; //i.e. shaner will be Shane Reaume in repname variable
                                $("#yourrep").html(repname);
                                $("a[href='http://devv.referadiabetic.com']").attr('href', 'http://devv.referadiabetic.com/' + rep);
                            }
                        }
                    });

                }
        );

    }
});

我已经有了这个作为后备,我正在使用 IP 地址来获取邮政编码,但是由于移动设备的性质,我将它们设置为执行此代码块。

4

1 回答 1

1

setTimeout期望第一个参数是一些代码的字符串或对函数的调用。我相信它试图解析fail为字符串,并且......呃......失败了。

setTimeout("function() fail('10 seconds expired');", 10000);
于 2012-12-20T17:08:08.187 回答