✅ ما هو sessionStorage
؟
sessionStorage
هو جزء من Web Storage API، يُستخدم لتخزين البيانات في المتصفح مؤقتًا، بحيث:
- تبقى البيانات محفوظة طالما التبويب مفتوح.
- بمجرد إغلاق التبويب أو الصفحة، يتم حذف كل البيانات تلقائيًا.
💡 خصائص sessionStorage:
الخاصية القيمة
مدة التخزين مؤقتة (حتى غلق التبويب فقط)
التخزين حسب التبويب نعم، لا يُشارك البيانات بين التبويبات
نوع البيانات تُخزن كنصوص (string) فقط
السعة ~5 ميجابايت تقريبًا
🔧 أهم الدوال:
الوظيفة | الدالة |
---|---|
إضافة/تعديل عنصر | sessionStorage.setItem(key, value) |
قراءة عنصر | sessionStorage.getItem(key) |
حذف عنصر | sessionStorage.removeItem(key) |
حذف كل العناصر | sessionStorage.clear() |
عدد العناصر | sessionStorage.length |
مفتاح حسب الفهرس | sessionStorage.key(index) |
✅ أمثلة عملية:
🟢 1. حفظ عنصر:
sessionStorage.setItem("user", "Yasin");
JavaScript🟢 2. قراءة عنصر:
let user = sessionStorage.getItem("user");
console.log(user); // Yasin
JavaScript🟢 3. حذف عنصر:
sessionStorage.removeItem("user");
JavaScript🟢 4. مسح كل البيانات:
sessionStorage.clear();
JavaScript🧠 تخزين كائن باستخدام JSON:
let user = { name: "Ali", age: 30 };
sessionStorage.setItem("user", JSON.stringify(user));
let userData = JSON.parse(sessionStorage.getItem("user"));
console.log(userData.name); // Ali
JavaScript🧪 مثال تطبيقي:
<input type="text" id="cityInput" placeholder="اكتب مدينتك">
<button onclick="saveCity()">حفظ المدينة</button>
<button onclick="loadCity()">عرض المدينة</button>
<p id="output"></p>
<script>
function saveCity() {
let city = document.getElementById("cityInput").value;
sessionStorage.setItem("city", city);
}
function loadCity() {
let city = sessionStorage.getItem("city");
document.getElementById("output").innerText = city ?? "لا توجد مدينة محفوظة.";
}
</script>
JavaScript📌 الفرق بين localStorage
و sessionStorage
الميزة | localStorage | sessionStorage |
---|---|---|
مدة التخزين | دائم | حتى غلق التبويب فقط |
المشاركة بين التبويبات | نعم | لا |
الحجم التقريبي | ~5-10 ميجا | ~5 ميجا |
📋 استخدامات sessionStorage
(Use Cases)
✅ 1. تخزين حالة الجلسة:
- مثال: حفظ حالة تسجيل دخول المستخدم مؤقتًا دون الحاجة لتخزين دائم.
sessionStorage.setItem("isLoggedIn", "true");
JavaScript✅ 2. تتبع بيانات النماذج مؤقتًا:
- مثال: أثناء التنقل بين صفحات متعددة في نموذج تسجيل أو طلب.
✅ 3. إدارة حالة واجهة المستخدم (UI):
- مثل حفظ الوضع الليلي/النهاري خلال الجلسة فقط.
✅ 4. سلة مؤقتة أو نتائج مؤقتة:
- مثال: نتائج بحث، أو مقالات تم الاطلاع عليها خلال نفس الجلسة فقط.
✅ 5. منع إعادة الإرسال بعد التحديث:
- مثل حفظ قيمة مدخلة حتى لا يعيدها المستخدم بعد تحديث الصفحة.
🛑 تحذيرات:
- لا يُستخدم لتخزين بيانات حساسة.
- لا يُشارك البيانات بين التبويبات.
- يختفي عند غلق التبويب أو إعادة فتح الصفحة من جديد
🎯 فكرة المشروع:
- الصفحة الأولى: فيها نموذج بسيط لتسجيل الاسم والبريد.
- الصفحة الثانية: تعرض البيانات التي تم إدخالها.
📝 الصفحة 1: form.html
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<title>الصفحة الأولى - نموذج</title>
</head>
<body>
<h2>👤 معلومات المستخدم</h2>
<form onsubmit="saveData(); return false;">
<label>الاسم:</label><br>
<input type="text" id="name"><br><br>
<label>البريد الإلكتروني:</label><br>
<input type="email" id="email"><br><br>
<button type="submit">التالي ➡️</button>
</form>
<script>
// حفظ البيانات في sessionStorage
function saveData() {
let name = document.getElementById("name").value;
let email = document.getElementById("email").value;
sessionStorage.setItem("name", name);
sessionStorage.setItem("email", email);
// الانتقال للصفحة الثانية
window.location.href = "result.html";
}
// تعبئة الحقول إن كانت البيانات موجودة مسبقًا
window.onload = function () {
document.getElementById("name").value = sessionStorage.getItem("name") || "";
document.getElementById("email").value = sessionStorage.getItem("email") || "";
};
</script>
</body>
</html>
JavaScript📝 الصفحة 2: result.html
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<title>الصفحة الثانية - عرض البيانات</title>
</head>
<body>
<h2>📋 بياناتك:</h2>
<p><strong>الاسم:</strong> <span id="name"></span></p>
<p><strong>البريد:</strong> <span id="email"></span></p>
<br>
<a href="form.html">🔙 رجوع للتعديل</a>
<script>
document.getElementById("name").innerText = sessionStorage.getItem("name") || "غير متوفر";
document.getElementById("email").innerText = sessionStorage.getItem("email") || "غير متوفر";
</script>
</body>
</html>
JavaScript✅ النتيجة:
- المستخدم يكتب بياناته ويضغط “التالي”.
- يتم حفظ البيانات في
sessionStorage
. - عند الانتقال للصفحة الثانية يتم عرض البيانات.
- يمكنه العودة للتعديل دون فقدان ما كتبه سابقًا.
📦 مميزات هذه الطريقة:
- لا تعتمد على السيرفر.
- سريعة وخفيفة.
- تحمي المستخدم من فقدان البيانات أثناء التنقل.
- مناسبة لتطبيقات SPA أو النماذج الطويلة.