javascript - 检查 cookie 是否存在于 javascript 中

标签 javascript ruby-on-rails cookies

我的 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/

相关文章:

ruby-on-rails - Ruby 二维数组排序基于第一个元素

ruby-on-rails - Gemfile 被加载两次。为什么?我该如何阻止它?

css - 如何使用 Watir 在 div.style 标签中定位文本?

javascript - 延迟 javascript 函数并仅显示一次

javascript - 围绕图像流动图像

javascript - 使用 Nearley.js 进行解析的友好错误报告

javascript - AJAX GET 调用将在第一次调用时起作用,但在其他点击后不起作用

php - 没有提交的单选按钮值到mysql

angularjs - Angular 1.4.1 $cookies 最终成为 session cookie

javascript - 避免根据特定的 URL 字符串设置 cookie