هل يمكنني نسخ محتوى ملف نصي إلى clipboard

السلام عليكم

هل يوجد طريقة لنسخ محتوى ملف نصي .txt إلى clipboard


التعليق السابق

نعم برمجياً

يوسف سيد أضف ردا

إذًا بما أنَّ الموضوع في تطوير الويب؛ فأنت بالتأكيد تقصد JavaScript، لا يوجد بالمتصفحات api حقيقي لنسخ نص، للأسف. سنقوم بدلًا من ذلك بإنشاء عنصر في الخلفية، ثم التحديد عليه ونسخه، مع العلم أنّه لو كان المستخدم يكتب فسيضيع المحدد، فيرفوكس الوحيد الذي يدعم تعدد المحددات، عمومًا هذه الطريقة لا تعمل بشكل صحيح دائمًا بسبب حماية المستخدم تعمل على إصدارات متفاوتة من كروم ولا تعمل على الأخرى وهكذا، عمومًا هذا الدالة ترجه boolean يمكنك استخدامها كحل أول وإن لم تفلح اخرج للمستخدم صفحة به النص مع تحديده وأخبره أن يضغط على زر النسخ:

function copyText(text) {
    var dev = document.createElement("div"), // العنصر الذي سننسخه
        range = document.createRange(), // المحدد
        node  = document.createTextNode(text); // المحتوى للعنصر

    // الحتوى النصي للعنصر
    dev.appendChild(node);

    // إخفاء العنصر وإضافته في الخلفية
    dev.style.display = "hidden";
    dev.style.color   = "transparent";
    document.body.appendChild(dev);

    // تحديد المحتوى
    range.selectNode(node);

    // حذف المحددات وإضافة محددنا
    getSelection().removeAllRanges();
    getSelection().addRange(range);

    // نسخ النص من المحدد
    var ok = document.execCommand("copy", true);

    // تنظيف العمل
    getSelection().removeAllRanges();
    dev.parentElement.removeChild(dev);

    return ok;
}

بالنسبة لفتح الملف .txt استخدم ajax لذلك أو أخبرني أساعدك في كتابته بإذن الله.

شكراً لك صديقي على اهتمامك ، أنا أعرف طريقة نسخ نص من عنصر في الصفحة لكن مشكلتي بالتعامل مع ملف .txt

ستحصل على الملف من الخادم أي من رابط معيّن أم تريد جعل المستخدم يحدده من حاسوبه؟

من رابط معين

يوسف سيد أضف ردا

هذه الدالة التي ستستخدمها:

function getContent(url, callback) {
    var http = new window.XMLHttpRequest;

    http.onreadystatechange = function() {
        // الطلب تم الاجابة عليه والحالة مرسل
        if (http.readyState == 4 && http.status == 200)
            callback(http.responseText)
    }

    // فتح الطلب بنوع get إلى عنوان الموقع
    http.open("GET", url);

    // لا نقبل غير ملفات .txt غير هذا إن أردت
    http.setRequestHeader("Accept", "text/plain");

    // ارسال الطلب
    http.send(null);
}

الدالة السابقة غير متزامنة(async)؛ استخدمها هكذا:

getContent("

http:/url.com/text.txt ", function(content) { alert(content) });

abdullrahman أضف ردا

أجدد شكري لك على مجهودك ، أريد أن أسألك ما هي الطريقة التي اتبعتها لتعلم javascript ؟

أنا أعمل الآن مطور قوالب ووردبريس و أعتبر نفسي متوسط المستوى في المجال . ما ينقصني هو javascript تعلمت أساسياتها سابقاً لكن وجدت نفسي لا أستطيع تطبيق أي شيء فهل من نصيحة

يوسف سيد أضف ردا

لا يوجد طريق سحري؛ داوم على كتابة المشاريع هذا الطريق الصحيح، وابتعد عن التعلم بدون تطبيق، وحاول معرفة كيف يعمل كل شيء، ثم اصبر قد يأخذ منك بعض السنين أو الأشهر أو الأسابيع لإتقانها جيدًا، وسيفيدك الإطلاع على المشاريع مفتوحة المصدر والمساهمة بها.

أدعواْ الله أن يوفقك.

أخي أرجو ألا أزعجك

بالنسبة لهذا الكود يعمل فقط إن كان الرابط https

فهل من طريقة لفتح ملف موجود في حاسوبي باستخدام مثلا

file:///C:/Documents%20and%20Settings/my%20PC/Desktop/img%20show/txt.txt

أو إن كان على نفس المجلد ب txt.txt

ليس باستخدام ال input file

وشكرا

ahmed3991 أضف ردا

أخي زكريا

لا يمكن للajax قراءة الملفات المحلية لديك على الحاسب وإلا فإنك ستكون عرضة لسرقة ملفاتك الخاصة

شكرا لك أخي

أريد برمجة موقع ثابت يمكن تغيير محتواه عن طريق تغيير محتوى الملف النصي txt

الملف txt فيه روابط صورة في كل سطر

أريد الوصول لهذه الروابط ب JavaScript

إذاً لا تحتاج لفتح ملف في حاسوبك

كيف ذلك

ملف txt سيكون على سيرفرك أو استضافتك

بالإضافة إلى ما قاله الأخ @ahmed3991 فإنه يمكنك إيقاف الأمان في كروم --disable-web-security؛ لكن لن يكون التصفح أمن إطلاقًا.

كما قال @zakariamouhid استخدم إستضافتك لذلك، إلا في حالة ما كنت تريد أن تجرب شيء.