我不确定它是否与float变量有关,但我这样做:
if ($.cookie('latitude') == undefined && $.cookie('longitude') == undefined) {
if (window.location.search.indexOf('latitude') <= -1 || (window.location.search.indexOf('longitude') <= -1)) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
window.location.replace(window.location.pathname + '?latitude=' + latitude + '&longitude=' + longitude);
}, function (position) {
window.location.replace(window.location.pathname + '?latitude=error&longitude=error');
}, timeout = 7000);
$.cookie('latitude', latitude, {expires: 7, path: '/'});
$.cookie('longitude', longitude, {expires: 7, path: '/'});
}
}
}
但是最后两行创建的cookie未定义。我一直在努力工作,所以我可能会遗漏一些愚蠢的东西。
答案 0 :(得分:1)
您的问题是 promises 的常见错误。您必须在getCurrentPosition
回调中设置Cookie,其中定义了变量latitude
和longitude
。在那里,那些变量将永远是未定义的,因为它们将超出其范围:
if ($.cookie('latitude') == undefined && $.cookie('longitude') == undefined) {
if (window.location.search.indexOf('latitude') <= -1 || (window.location.search.indexOf('longitude') <= -1)) {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
window.location.replace(window.location.pathname + '?latitude=' + latitude + '&longitude=' + longitude);
$.cookie('latitude', latitude, {expires: 7, path: '/'});
$.cookie('longitude', longitude, {expires: 7, path: '/'});
}, function (position) {
window.location.replace(window.location.pathname + '?latitude=error&longitude=error');
}, timeout = 7000);
}
}
}
这应该有用。