第二次更新:由于没有修复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上它失败了,所以如果选择了!并在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地址来获取邮政编码,但由于移动设备的性质,我正在设置这些以执行此代码块。
答案 0 :(得分:1)
setTimeout
期望第一个参数是某些代码的字符串或对函数的调用。我相信它试图将fail
解析为一个字符串,然后......呃...失败。
setTimeout("function() fail('10 seconds expired');", 10000);