دليل الشفرات والسكربتات البرمجية المتكاملة

1. سكربت نسخ النصوص بضغطة زر

يتيح للزوار نسخ الأكواد أو الروابط البرمجية مباشرة إلى الحافظة:

function copyCodeSnippet(textToCopy) {
    navigator.clipboard.writeText(textToCopy).then(() => {
        alert("تم نسخ الكود بنجاح!");
    });
}
2. زر الصعود لأعلى الصفحة بسلاسة

يظهر الزر تدريجياً عندما يتصفح المستخدم لأسفل الموقع ويعيده للأعلى بانسيابية:

window.onscroll = function() {
    let btn = document.getElementById("topBtn");
    btn.style.display = (window.scrollY > 300) ? "block" : "none";
};
function backToTop() {
    window.scrollTo({ top: 0, behavior: 'smooth' });
}
3. نافذة منبثقة تفاعلية (Modal Box)

قالب منبثق لعرض رسائل تحذيرية أو إعلانات للمستخدمين داخل الموقع:

function openModal() {
    document.getElementById("customModal").style.display = "flex";
}
function closeModal() {
    document.getElementById("customModal").style.display = "none";
}
4. محرك البحث الفوري داخل الصفحة

تصفية وعرض العناصر المطابقة فوراً حسب ما يكتبه المستخدم في الحقل:

function liveSearch() {
    let query = document.getElementById("searchField").value.toLowerCase();
    let items = document.getElementsByClassName("item-card");
    for (let i = 0; i < items.length; i++) {
        let text = items[i].innerText.toLowerCase();
        items[i].style.display = text.includes(query) ? "block" : "none";
    }
}
5. نظام التبويبات المتعددة (Tabs System)

عرض محتويات مختلفة ضمن نفس المساحة وتنقل سلس بدون إعادة تحميل:

function showTab(evt, tabId) {
    let contents = document.getElementsByClassName("tab-content");
    for (let c of contents) c.style.display = "none";
    document.getElementById(tabId).style.display = "block";
}
6. مؤشر تحميل الموقع (Page Preloader)

إظهار شاشة تحميل مؤقتة ريثما يتم اكتمال تحميل عناصر الصفحة:

window.addEventListener("load", () => {
    let loader = document.getElementById("loader");
    loader.style.opacity = "0";
    setTimeout(() => loader.style.display = "none", 400);
});
7. عداد تنازلي زمني (Countdown Timer)

حساب الوقت المتبقي لأي فعالية أو إطلاق مشروع قادم بالأيام والساعات:

let targetDate = new Date("Dec 31, 2026 00:00:00").getTime();
let timerInterval = setInterval(() => {
    let now = new Date().getTime();
    let diff = targetDate - now;
    let days = Math.floor(diff / (1000 * 60 * 60 * 24));
    console.log(days + " يوم متبقي");
}, 1000);
8. حماية المحتوى ضد النسخ المزعج

منع النقر بزر الفأرة الأيمن واختصارات لوحة المفاتيح لحماية الأكواد والمقالات:

document.addEventListener('contextmenu', e => e.preventDefault());
document.onkeydown = function(e) {
    if (e.keyCode == 123 || (e.ctrlKey && e.shiftKey && e.keyCode == 73)) return false;
};
9. القائمة الجانبية للموبايل (Hamburger Menu)

إظهار وإخفاء شريط التنقل العلوي بشكل أنيق على الشاشات الصغيرة:

function toggleMobileMenu() {
    let nav = document.getElementById("navMenu");
    nav.classList.toggle("active-menu");
}
10. إشعار منبثق قصير (Toast Notification)

رسالة تنبيه عائمة تظهر أسفل الشاشة لفترة وجيزة ثم تختفي تلقائياً:

function showToast(msg) {
    let t = document.createElement("div");
    t.className = "toast-box";
    t.innerText = msg;
    document.body.appendChild(t);
    setTimeout(() => t.remove(), 3000);
}
11. التحقق من صحة بيانات النماذج (Form Validation)

التأكد من أن الحقول الإجبارية غير فارغة قبل إرسال النموذج:

function validateFormInput() {
    let val = document.forms["regForm"]["username"].value;
    if (val.trim() === "") {
        alert("يرجى إدخال اسم المستخدم بشكل صحيح!");
        return false;
    }
}
12. الأسئلة الشائعة القابلة للطي (Accordion FAQ)

إظهار وإخفاء نص الإجابة عند الضغط على السؤال:

let accTriggers = document.getElementsByClassName("accordion-btn");
for (let i = 0; i < accTriggers.length; i++) {
    accTriggers[i].addEventListener("click", function() {
        this.classList.toggle("active");
        let panel = this.nextElementSibling;
        panel.style.display = (panel.style.display === "block") ? "none" : "block";
    });
}
13. عارض الصور المكبرة (Lightbox Viewer)

تكبير الصور المصغرة داخل نافذة مركزية عند النقر عليها:

function openLightbox(imgElement) {
    document.getElementById("lightboxModal").style.display = "block";
    document.getElementById("lightboxImg").src = imgElement.src;
}
14. حفظ إعدادات الزائر في المتصفح (LocalStorage)

الاحتفاظ بتفضيلات المستخدم (كالوضع الليلي مثلاً) حتى بعد إعادة فتح الموقع:

function savePreference(key, val) {
    localStorage.setItem(key, val);
}
function loadPreference(key) {
    return localStorage.getItem(key);
}
15. تغيير لون الخلفية عشوائياً (Dynamic Background)

توليد ألوان تدرجية عشوائية عند الضغط على زر التخصيص:

function changeRandomBackground() {
    let color1 = '#' + Math.floor(Math.random()*16777215).toString(16);
    let color2 = '#' + Math.floor(Math.random()*16777215).toString(16);
    document.body.style.background = `linear-gradient(135deg, ${color1}, ${color2})`;
}
16. توليد كلمة مرور قوية عشوائية

إنشاء سلاسل آمنة تتضمن حروفاً وأرقاماً ورموزاً لاستخدامها في الأمان:

function generatePassword(length = 12) {
    let chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#$!";
    let pass = "";
    for (let i = 0; i < length; i++) {
        pass += chars.charAt(Math.floor(Math.random() * chars.length));
    }
    return pass;
}
17. شريط تقدم قراءة المقال (Reading Progress Bar)

شريط يتحرك في أعلى الصفحة ليوضح نسبة ما أنجزه الزائر من قراءة الموضوع:

window.onscroll = function() {
    let winScroll = document.documentElement.scrollTop;
    let height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
    let scrolled = (winScroll / height) * 100;
    document.getElementById("progressBar").style.width = scrolled + "%";
};
18. كشف متصفح الزائر ونوع جهازه

التعرف على ما إذا كان المستخدم يتصفح من هاتف محمول أو حاسوب شخصي:

function detectDeviceType() {
    if (/Mobi|Android/i.test(navigator.userAgent)) {
        return "هاتف محمول";
    }
    return "حاسوب مكتبي";
}
19. إعادة التوجيه التلقائي للصفحات

نقل الزائر إلى رابط أو صفحة أخرى بعد انقضاء عدد معين من الثواني:

function redirectAfterDelay(targetUrl, seconds) {
    setTimeout(() => {
        window.location.href = targetUrl;
    }, seconds * 1000);
}
20. إخفاء وإظهار كلمة المرور في خانة الإدخال

زر تبديل يتيح للمستخدم رؤية الحروف المخفية في حقل كلمة السر:

function togglePasswordVisibility() {
    let inputField = document.getElementById("passwordField");
    inputField.type = (inputField.type === "password") ? "text" : "password";
}
21. عداد حروف وزناً للتعليقات والنصوص

مراقبة عدد الحروف المكتوبة في حقل الإدخال وتنبيه المستخدم عند الحد الأقصى:

function countCharacters() {
    let textLength = document.getElementById("commentBox").value.length;
    document.getElementById("charCount").innerText = textLength + " حرف";
}
22. ميزة الطباعة السريعة لصفحة الويب

استدعاء نافذة الطباعة الخاصة بالمتصفح بضغطة زر واحدة:

function printCurrentPage() {
    window.print();
}
23. تأثير الكتابة التلقائية للنصوص (Typing Effect)

عرض العناوين أو الترحيب بحروف تتسابق وتظهر كأن شخصاً يكتبها حياً:

let i = 0;
let txt = "أهلاً بك في منصة Smart Web الاحترافية..";
function typeWriterEffect() {
    if (i < txt.length) {
        document.getElementById("typeTarget").innerHTML += txt.charAt(i);
        i++;
        setTimeout(typeWriterEffect, 50);
    }
}
24. فحص حالة الاتصال بالإنترنت للزائر

تنبيه المستخدم فوراً إذا انقطع اتصال الإنترنت أو عاد للعمل لديه:

window.addEventListener('offline', () => {
    alert("تنبيه: انقطع اتصالك بالإنترنت!");
});
window.addEventListener('online', () => {
    alert("عادت التغطية والاتصال بالإنترنت بنجاح.");
});
25. تأثير تكبير العناصر عند تمرير الفأرة (Zoom Hover)

إضافة حركة تفاعلية ناعمة للبطاقات والصور عند مرور الماوس فوقها عبر CSS:

.hover-card {
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.hover-card:hover {
    transform: translateY(-8px);
    box-shadow: 0 15px 35px rgba(56, 189, 248, 0.25);
}
26. تشغيل واكتشاف وضع السكون (Dark Mode Detector)

التحقق مما إذا كان نظام تشغيل المستخدم مضبوطاً تلقائياً على الوضع الداكن:

const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
if (prefersDark) {
    console.log("المستخدم يفضل الوضع الداكن");
}
27. إزالة المسافات الزائدة من النصوص المدخلة

تنظيف النصوص وحذف الفراغات غير الضرورية من بدايتها ونهايتها:

function cleanUserText(str) {
    return str.trim().replace(/\s+/g, ' ');
}
28. تعطيل زر الإرسال مؤقتة لمنع التكرار

قفل زر الإرسال فور الضغط عليه لمنع إرسال نفس الطلب مرتين بالخطأ:

function disableButtonTemporarily(btn) {
    btn.disabled = true;
    btn.innerText = "جاري المعالجة...";
    setTimeout(() => {
        btn.disabled = false;
        btn.innerText = "إرسال الطلب";
    }, 3000);
}
29. تحديث وقت آخر تعديل للملف تلقائياً

جلب وقت وواريخ تحديث الصفحة وبرمجتها لتظهر للزوار أسفل الموقع:

function displayLastModifiedDate() {
    let modDate = document.lastModified;
    document.getElementById("updateTime").innerText = "آخر تحديث: " + modDate;
}
30. كود تصدير البيانات إلى ملف نصي (Text Export)

تنزيل النصوص أو البيانات المعروضة في الموقع على شكل ملف نصي (.txt) بجهاز الزائر:

function exportTextToFile(filename, textContent) {
    let blob = new Blob([textContent], { type: 'text/plain;charset=utf-8' });
    let link = document.createElement('a');
    link.href = URL.createObjectURL(blob);
    link.download = filename;
    link.click();
}