- Konu sahibi
- #1
Tarayıcıda bir değeri kaydetmek için
İlk satır
Bu varsayımsal örnekte kaydedilen metin tekrar bir nesneye dönüşür; uygulamanız ardından özellikleri okuyabilir. Yalnızca okuma kısmını yenilemeden sonra da çalıştırabilirsiniz. Kayıt bulunamazsa varsayılan ayarlarla devam edebilirsiniz. JSON ayrıştırma hatası ise anahtarın yokluğundan farklıdır: kayıt vardır, fakat içeriği beklenen biçimde değildir. Uygulamanız bu durumda varsayılanları kullanabilir veya kullanıcıya ayarları yeniden kaydetme seçeneği sunabilir.
Kayıt beklenmedik biçimde bulunamıyorsa önce anahtarın yazımını ve sayfanın protokol, alan adı ve bağlantı noktasını kontrol edin. Örneğin HTTP ve HTTPS için depolama alanları ayrıdır. Verinin bulunmaması tek başına yazma işleminin hiç yapılmadığını kanıtlamaz: kayıt silinmiş veya farklı bir kaynakta oluşturulmuş olabilir. Doğru kaynağa dönüp yeniden kaydederek kontrol edin.
Depolamaya erişim tarayıcı politikaları nedeniyle engellenebilir; alan dolduğunda da yazma işlemi hata verebilir. Uygulama kodunda erişimi ve yazmayı
localStorage güvenli bir parola kasası değildir. Aynı kaynaktaki JavaScript kodu kayıtlara erişebilir; parola, erişim belirteci gibi hassas bilgileri burada saklamayın. Veriler kullanıcı tarafından silinebilir; gizli gezinmede de oturum sona erdiğinde temizlenebilir. Bu nedenle bunları tek kalıcı yedek olarak kullanmayın.
localStorage.setItem(anahtar, değer), okumak için localStorage.getItem(anahtar) kullanın. Veriler metin olarak saklanır; nesne veya dizi kaydederken önce JSON’a dönüştürmeniz, okurken de geri ayrıştırmanız gerekir. Kaydedilen değer, aynı kaynaktaki sayfa yeniden açıldığında da okunabilir.Metin kaydetme ve okuma
Aşağıdaki örneği tarayıcıda açık bir web sayfasının geliştirici araçlarındaki JavaScript konsolunda çalıştırın. Kaynak; sayfanın protokolü, alan adı ve bağlantı noktasının birleşimidir. Örneği doğrudan açılmış bir dosyada değil, HTTP veya HTTPS üzerinden sunulan bir sayfada deneyin;file: adreslerinde depolama davranışı tarayıcıya göre değişebilir.
JavaScript:
localStorage.setItem("tema", "koyu");
const tema = localStorage.getItem("tema");
console.log(tema); // koyu
İlk satır
tema anahtarına koyu değerini yazar. Aynı anahtarla tekrar setItem() çağırırsanız eski değer değiştirilir. Sayfayı yeniledikten sonra yalnızca localStorage.getItem("tema") komutunu çalıştırarak değerin korunduğunu görebilirsiniz.getItem() anahtar bulunmadığında null döndürür. Bu, boş metinden farklıdır: "" kaydedilmiş bir değerdir. Örneğin varsayılan değeri yalnızca anahtar yoksa kullanmak için const tema = localStorage.getItem("tema") ?? "acik"; yazabilirsiniz.Nesne kaydetme ve geri okuma
localStorage nesneleri doğrudan nesne olarak saklamaz. Önce JSON.stringify() ile metne çevirin; okuduğunuz metni JSON.parse() ile geri dönüştürün:
JavaScript:
const ayarlar = { tema: "koyu", yaziBoyutu: 16 };
localStorage.setItem("ayarlar", JSON.stringify(ayarlar));
const kayit = localStorage.getItem("ayarlar");
if (kayit !== null) {
try {
const okunanAyarlar = JSON.parse(kayit);
console.log(okunanAyarlar.tema); // koyu
console.log(okunanAyarlar.yaziBoyutu); // 16
} catch (hata) {
console.error("Ayarlar geçerli JSON değil.");
}
} else {
console.log("Kayıt bulunamadı.");
}
Bu varsayımsal örnekte kaydedilen metin tekrar bir nesneye dönüşür; uygulamanız ardından özellikleri okuyabilir. Yalnızca okuma kısmını yenilemeden sonra da çalıştırabilirsiniz. Kayıt bulunamazsa varsayılan ayarlarla devam edebilirsiniz. JSON ayrıştırma hatası ise anahtarın yokluğundan farklıdır: kayıt vardır, fakat içeriği beklenen biçimde değildir. Uygulamanız bu durumda varsayılanları kullanabilir veya kullanıcıya ayarları yeniden kaydetme seçeneği sunabilir.
Kaydı silme ve sorunları kontrol etme
Tek bir kaydı silmek içinlocalStorage.removeItem("tema") kullanın. Sonrasında aynı anahtar için getItem() çağrısı null döndürür. localStorage.clear() ise yalnızca örnek kaydı değil, o kaynağın tüm localStorage kayıtlarını siler; diğer uygulama verilerini de etkileyebileceğinden dikkatli kullanın.Kayıt beklenmedik biçimde bulunamıyorsa önce anahtarın yazımını ve sayfanın protokol, alan adı ve bağlantı noktasını kontrol edin. Örneğin HTTP ve HTTPS için depolama alanları ayrıdır. Verinin bulunmaması tek başına yazma işleminin hiç yapılmadığını kanıtlamaz: kayıt silinmiş veya farklı bir kaynakta oluşturulmuş olabilir. Doğru kaynağa dönüp yeniden kaydederek kontrol edin.
Depolamaya erişim tarayıcı politikaları nedeniyle engellenebilir; alan dolduğunda da yazma işlemi hata verebilir. Uygulama kodunda erişimi ve yazmayı
try...catch içine alıp hatayı ele alın. QuotaExceededError durumunda uygulamanıza ait gereksiz kayıtları silip yeniden deneyin; SecurityError durumunda adresi ve tarayıcının site verilerine ilişkin ayarlarını kontrol edin. Hata sürerse uygulamanın kayıtsız çalışmasına veya kullanıcıya kaydın tamamlanmadığını göstermesine imkân tanıyın.localStorage güvenli bir parola kasası değildir. Aynı kaynaktaki JavaScript kodu kayıtlara erişebilir; parola, erişim belirteci gibi hassas bilgileri burada saklamayın. Veriler kullanıcı tarafından silinebilir; gizli gezinmede de oturum sona erdiğinde temizlenebilir. Bu nedenle bunları tek kalıcı yedek olarak kullanmayın.
Moderatör tarafında düzenlendi: