我的 rails 应用程序
中有以下 JavaScript,我只想在 cookie 不存在时运行它。
function getGeoLocation() {
navigator.geolocation.getCurrentPosition(setGeoCookie);
}
function setGeoCookie(position) {
var cookie_val = position.coords.latitude + "|" + position.coords.longitude;
document.cookie = "lat_lng=" + escape(cookie_val);
}
我正在使用它在我的 Rails 应用程序上调用脚本:
<%- unless @lat_lng %>
<script>
getGeoLocation();
</script>
<%- end %>
更新
我根据@Njdhv 的回答更新了我的 application.js
文件,但弹出窗口仍然出现。这是我所做的:
function getCookieByName(name) {
var parts = document.cookie.split('; '),
len = parts.length,
item, i, ret;
for (i = 0; i < len; ++i) {
item = parts[i].split('=');
if (item[0] === name) {
ret = item[1];
return ret ? unescape(ret) : '';
}
}
return null;
}
if(getCookieByName('lat_lng') != null){
console.log('lat_lng')
function getGeoLocation() {
navigator.geolocation.getCurrentPosition(setGeoCookie);
}
function setGeoCookie(position) {
var cookie_val = position.coords.latitude + "|" + position.coords.longitude;
document.cookie = "lat_lng=" + escape(cookie_val);
}
}else{
//you can put your logic here...
}
最佳答案
我发现了问题所在,我必须在我的 View 中更改它:
来自这里:
<%- unless @lat_lng %>
<script>
getGeoLocation();
</script>
<%- end %>
为此:
<% if cookies[:lat_lng].nil? %>
<script>
getGeoLocation();
</script>
<% end %>
关于javascript - 检查 cookie 是否存在于 javascript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202299/