重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

このCookieの関数を、使い方はそのままでWebStorageに保存するように変えるにはどうすればいいでしょうか。よろしくお願いします。


function setCookie(name, value, days) {
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
const expires = "expires=" + date.toUTCString();
document.cookie = name + "=" + value + ";" + expires + ";path=/";
}

function getCookie(name) {
const nameEQ = name + "=";
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}

A 回答 (4件)

cookieは保存されている情報をWEBにアクセスしたタイミングで先行しておくることがきます


かりにlocalStorageを使用したとしてもWEB側でそのデータに直接アクセスできないので代替性は微妙です。cookieは普通js-cookieなどのライブラリを使えばそれほど苦にはならないと思いますが・・
    • good
    • 0

こんばんは



WebStorageとCookieの違いの一つに、期限を設定しないということがあります。
WebStorage(→localStorage)の場合は、削除しない限りデータは保持し続けられます。
(ですので、引数daysの指定は無視します)


◇ ご提示の関数を無条件で書き換えるので良ければ、
function setCookie(name, value, days) {
localStorage.setItem(name, value);
}
function getCookie(name) {
return localStorage.getItem(name);
}

◇ localStorageが使えるかの環境をチェックして、使えるならlocalStorageをそうでなければCookieをというように動的に書き換えるなら、ご提示の関数に加えて・・
if(!!window.localStorage){
setCookie = (k, v) => localStorage.setItem(k, v);
getCookie = k => localStorage.getItem(k);
}
のような感じで実現できるでしょう。

※ 実は上記のチェックは簡易的なものなので、厳密なチェックは行っていません。(例えば、ユーザがブロックしているような場合)
厳密にチェックを行いたい場合は、以下にある検出関数をご利用ください。
https://developer.mozilla.org/ja/docs/Web/API/We …
    • good
    • 0

すみません。

私の知識が古かったです。
できるみたいですね

https://allabout.co.jp/gm/gc/385026/
    • good
    • 0

Webブラウザ上に表示したページからクライアント側に情報を保存できるのはCookieに対してだけです。


この制約があるため、Webブラウザ上に表示したページからWebStrage上に情報を保存することはできません
Cookie以外への保存は、利用者が意思を持って自身の操作で情報を保存やコピペしてもらうことしかできません
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A