📚 مراجعة سريعة: هذا التطبيق العملي مبني على مفهوم برمجي أساسي. راجع الدرس النظري من هنا أولاً.
تطبيق وظيفة النسخ إلى الحافظة باستخدام JavaScript و HTML
الآن بعد أن فهمنا الجوانب النظرية لواجهة برمجة تطبيقات الحافظة (Clipboard API) وكيفية عملها، حان الوقت لتطبيق هذه المعرفة عمليًا لإنشاء وظيفة "النسخ إلى الحافظة" سهلة الاستخدام في تطبيقات الويب الخاصة بك.
المتطلبات الأساسية
سنحتاج إلى ملف HTML بسيط وملف JavaScript لتنظيم الكود الخاص بنا.
1. هيكل HTML الأساسي
لنبدأ بإنشاء ملف index.html. سنحتاج إلى زر لتشغيل عملية النسخ وعنصر لعرض النص الذي نريد نسخه.
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>تطبيق النسخ إلى الحافظة</title>
<style>
body { font-family: Arial, sans-serif; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; margin: 0; background-color: #f4f4f4; }
.container { background-color: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); text-align: center; }
#textToCopy { width: 300px; padding: 10px; margin-bottom: 15px; border: 1px solid #ddd; border-radius: 4px; font-size: 16px; }
#copyButton { background-color: #007bff; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; }
#copyButton:hover { background-color: #0056b3; }
#feedbackMessage { margin-top: 15px; color: green; font-weight: bold; }
</style>
</head>
<body>
<div class="container">
<h1>النسخ إلى الحافظة</h1>
<textarea id="textToCopy" rows="4">هذا هو النص الذي سيتم نسخه إلى الحافظة.</textarea>
<button id="copyButton">انسخ النص</button>
<p id="feedbackMessage"></p>
</div>
<script src="script.js"></script>
</body>
</html>
2. دالة النسخ إلى الحافظة في JavaScript
الآن، لنقم بإنشاء ملف script.js وإضافة الدالة copyToClipboard التي درسناها سابقًا. سنقوم بتعديلها قليلاً لتتفاعل مع عناصر HTML.
const copyToClipboard = async (text) => {
try {
await navigator.clipboard.writeText(text);
return { success: true, message: 'تم نسخ النص بنجاح!' };
} catch (err) {
console.error('فشل في نسخ النص: ', err);
return { success: false, message: 'فشل في النسخ: ' + err.message };
}
};
// الحصول على العناصر من DOM
const textToCopyElement = document.getElementById('textToCopy');
const copyButton = document.getElementById('copyButton');
const feedbackMessage = document.getElementById('feedbackMessage');
// إضافة مستمع حدث عند النقر على الزر
copyButton.addEventListener('click', async () => {
const text = textToCopyElement.value; // الحصول على النص من مربع النص
const result = await copyToClipboard(text);
// عرض رسالة التغذية الراجعة للمستخدم
feedbackMessage.textContent = result.message;
feedbackMessage.style.color = result.success ? 'green' : 'red';
// إخفاء الرسالة بعد بضع ثوانٍ
setTimeout(() => {
feedbackMessage.textContent = '';
}, 3000);
});
3. شرح الكود
- قمنا بتعديل دالة
copyToClipboardلتعيد كائنًا يوضح ما إذا كانت العملية ناجحة ورسالة مناسبة. - نحصل على مرجع لعناصر HTML: مربع النص (
textToCopy)، الزر (copyButton)، وعنصر الفقرة لرسالة التغذية الراجعة (feedbackMessage). - نضيف مستمع حدث (
clickevent listener) إلىcopyButton. عندما يتم النقر على الزر:- نحصل على القيمة الحالية من مربع النص
textToCopy. - نستدعي الدالة
copyToClipboardمع هذا النص وننتظر نتيجتها. - نعرض رسالة النجاح أو الخطأ في العنصر
feedbackMessageونقوم بتغيير لونها بناءً على النتيجة. - نستخدم
setTimeoutلمسح رسالة التغذية الراجعة تلقائيًا بعد 3 ثوانٍ، مما يوفر تجربة مستخدم أنظف.
- نحصل على القيمة الحالية من مربع النص
تجربة التطبيق
لحفظ الملفين (index.html و script.js) في نفس المجلد. ثم افتح ملف index.html في متصفحك. اكتب أي نص في مربع النص، ثم انقر على زر "انسخ النص". ستلاحظ أن النص يتم نسخه إلى حافظتك، وستظهر رسالة تأكيد مؤقتة على الشاشة.
تذكر أن هذا سيعمل فقط إذا تم تقديم صفحتك عبر HTTPS (أو على localhost لأغراض التطوير).