2017-05-05 14 views
0

私は学生です(私は学生です)、javascript geo location apiで見つかったユーザーの場所を格納するCookieを作成しようとしています。しかし、クッキーはChromeで完全に動作しますが、SafariやFirefoxでは動作しません。私は検査官を見て、クッキーはクロムのためにそこにあったが、他の2つはなかった。クッキーのコードは以下の通りです。コードの残りはルビーで書かれています。クッキーのポイントは、コントローラの最近の場所をユーザーに知らせるためです。Javascript/Rails CookieはSafariで保存しませんが、Chromeで動作します

<%if @lat_lng.nil? %> 

<script> 
getGeoLocation(); 

function getGeoLocation() { 
navigator.geolocation.getCurrentPosition(setGeoCookie); 
} 

function setGeoCookie(position) { 
    var expiration = new Date(); 
    expiration.setDate(expiration.getDate()+1); 
    var cookie_val = position.coords.latitude + "|" + position.coords.longitude; 
    document.cookie = "lat_lng=" + escape(cookie_val); expires= 'expiration.toGMTString()'; 
} 
</script> 
<% end %> 

クッキーは私のアプリケーションのコントローラで定義されています @lat_lng = cookies[:lat_lng]

私は本当に可能な任意の助けに感謝します!あなたはクッキーを設定している場合

答えて

0

、それは次の形式にする必要があります:あなたのケースでは

document.cookie = "some=value; expires=Mon, 1 Jan 2000 12:59:59 GMT"; 

が、あなたは、単にJavaScriptで変数を定義しています。変更するには、

document.cookie = "lat_lng=" + escape(cookie_val) + "; expires=" + expiration.toGMTString(); 

PSに変更してください。しかし、expiresの部分はオプションであり、うまくいなければ機能するはずです。多分、SafariとFFはセキュリティ上の理由からそれを必要としますか?それをグーグルで試してみてください。

関連する問題