كيفية نسخ النص إلى الحافظة Clipboard من code> and <pre> tags> باستخدام Jquery و JS؟
تطوير الويب Backend - Javascript
بنتعلم في هذا المقال كيفية نسخ النص إلى الحافظة Clipboard من code> and <pre> tags> باستخدام Jquery و JS. بحيث يتم تطبيق الكود في ملف واحد واستخدامه في جميع الصفحات
الفكره نتعلم كيف نضيف button في tags الخاصه بالاكواد code> and <pre> tags>
للمزيد حول code> and <pre> tags> انقر هنا HTML Computer Code Elements
الصورة التالية توضح الفكره:

في الصورة اضفنا button في pre> tags> وطبقنا عليه كود للنسخ ، ولتأكيد النسخ عرضنا alert message كما في الصورة.
تمام نشوف كيف بنطبق هاذ الحكي:
اولا اضفنا كود JavaScript التالي في ملف منفصل باسم clipboard.js :
$(document).ready(function () {
$('code, pre').append('<span class="command-copy" ><i class="fa fa-clipboard" aria-hidden="true"></i></span>');
$('code span.command-copy').click(function (e) {
var text = $(this).parent().text().trim(); //.text();
var copyHex = document.createElement('input');
copyHex.value = text
document.body.appendChild(copyHex);
copyHex.select();
document.execCommand('copy');
console.log(copyHex.value)
document.body.removeChild(copyHex);
$('#CopyMessage').fadeIn(1000);
setTimeout(function () {
$('#CopyMessage').fadeOut(1000);
}, 3000);
});
$('pre span.command-copy').click(function (e) {
var text = $(this).parent().text().trim();
var copyHex = document.createElement('input');
copyHex.value = text
document.body.appendChild(copyHex);
copyHex.select();
document.execCommand('copy');
console.log(copyHex.value)
document.body.removeChild(copyHex);
$('#CopyMessage').fadeIn(1000);
setTimeout(function () {
$('#CopyMessage').fadeOut(1000);
}, 3000);
});
})
في هذا الكود اضنفا button باستخدام <span> واضنفا ايقونه النسخ باستخدام <li> وعملنا append الى pre> tags> وطبقنا عليه class باسم
command-copy
بعد هيك رجعنا النص الموجود داخل pre> tags> وخزنا النتيجة في متغير باسم text وبعد هيك عملنا متغير ثاني من نوع input باسم copyHex ودمجنا مع body . ثم نسخنا النص باستخدام الكود
document.execCommand('copy')
واخر اشي حذفنا input من body.
الكود التالي هو المسؤول عن عرض رسالة تم نسخ الكود بنجاح بالاخضر
$('#CopyMessage').fadeIn(1000);
setTimeout(function () {
$('#CopyMessage').fadeOut(1000);
}, 3000);
الاسم CopyMessage هو Id ل Div في الصفحه وكود هذا Div هو (هذا الكود بكون في صفحة العرض )
<div class="alert alert-success" id="CopyMessage" style="display:none;">تم نسخ الكود بنجاح</div>
طبقنا عرض الرسالة بحركة fade-In بسرعه 1000 mil second ، بعدها اضنفا وقت لاختفاء هذه المسج بمقدار 3000 mil second بحركه fadeOut
الكود الخاص بملف CSS (اسم الملف clipboard.css) :
code,
pre {
position: relative;
}
code,
pre {
display: block;
padding: 20px;
background: #f2f2f2;
color: #555755;
}
span.command-copy {
position: absolute;
top: 10px;
right: 10px;
opacity: .6;
font-size: 20px;
color: #555755;
}
span.command-copy:hover {
cursor: pointer;
border-color: #696969;
background-color: #e0e0e0;
}
#CopyMessage {
position: fixed;
top: 150px;
left: 50%;
z-index: 9999;
border-radius: 0px;
transform: translateX(-50%);
box-shadow: rgba(50, 50, 93, 0.25) 0px 6px 12px -2px, rgba(0, 0, 0, 0.3) 0px 3px 7px -3px;
}
في هذا الملف تم اضافة:
الكود الخاص ب code, pre للتحكم بمكان عرض button داخلها بحيث يتم عرض button واحد في مكان ثابت في كل code, pre
الكود الخاص بتصميم button الي كان الو class باسم command-copy باستخدام الكود في span.command-copy . واضنفتا كمان تأثير عند تحريك المؤشر فوقه باستخدام span.command-copy:hover
واضنفا تصميم خاص بالرسالة تم النسخ بنجاح الى كان الها Id باسم CopyMessage بالكود #CopyMessage
النتيجة:

اترك تعليقك