JQuery ব্যবহার করে ক্লিপবোর্ডে বোতামের অনুলিপি ক্লিক করুন


433

আমি কীভাবে ক্লিপবোর্ডে একটি ডিভের ভিতরে লেখাটি অনুলিপি করব? আমার একটি ডিভ রয়েছে এবং একটি লিঙ্ক যুক্ত করতে হবে যা ক্লিপবোর্ডে পাঠ্য যুক্ত করবে। এটির কোন সমাধান আছে?

<p class="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>

<a class="copy-text">copy Text</a>

আমি অনুলিপি পাঠ্য ক্লিক করার পরে, আমি Ctrl+ টিপুন V, এটি অবশ্যই আটকানো হবে।



ট্র্যাশোর ফ্ল্যাশ ছাড়াই এটি করার একটি চতুর উপায় রয়েছে: stackoverflow.com/questions/17527870/…
পল


@ মিশেলশেপার - কিছু ব্যবহারকারী এমনকি আপনার মন্তব্য এবং এখানকার বেশিরভাগ উত্তরগুলি প্রায় চার বছর আগে পোস্ট করা হয়েছিল, যখন একটি ছোট ফ্ল্যাশ অ্যাপের উপর ভিত্তি করে জিরোক্লিপবোর্ড একমাত্র ক্রস-ব্রাউজারের কার্যকর বিকল্প ছিল ক্লিপবোর্ড, এবং গোটো সমাধান সহ কাজ করুন। আজ সমস্ত আধুনিক ব্রাউজারগুলি এটিকে
দেশীয়ভাবে

@ অ্যাডিনিও: অবশ্যই, তবে সমস্ত ব্যবহারকারীরাই এই 'স্মার্ট' নয় এবং আপনার মন্তব্যে এখনও দু'টি আপগেট রয়েছে।
মাইকেল শ্যাপার

উত্তর:


483

২০১ of সালের হিসাবে সম্পাদনা করুন

২০১ of সালের হিসাবে, আপনি এখন বেশিরভাগ ব্রাউজারে ক্লিপবোর্ডে পাঠ্য অনুলিপি করতে পারেন কারণ বেশিরভাগ ব্রাউজারের ক্লিপবোর্ডে পাঠ্যক্রমের একটি নির্বাচন প্রোগ্রামক্রমে কপি করার ক্ষমতা রয়েছে document.execCommand("copy")যা একটি নির্বাচন বন্ধ করে দেয়।

ব্রাউজারে কিছু অন্যান্য ক্রিয়া যেমন (একটি নতুন উইন্ডো খোলার মতো), ক্লিপবোর্ডে অনুলিপি কেবলমাত্র একটি নির্দিষ্ট ব্যবহারকারী ক্রিয়া (মাউস ক্লিকের মতো) মাধ্যমে করা যেতে পারে। উদাহরণস্বরূপ, এটি একটি টাইমার মাধ্যমে করা যায় না।

এখানে একটি কোড উদাহরণ:

document.getElementById("copyButton").addEventListener("click", function() {
    copyToClipboard(document.getElementById("copyTarget"));
});

function copyToClipboard(elem) {
	  // create hidden text element, if it doesn't already exist
    var targetId = "_hiddenCopyText_";
    var isInput = elem.tagName === "INPUT" || elem.tagName === "TEXTAREA";
    var origSelectionStart, origSelectionEnd;
    if (isInput) {
        // can just use the original source element for the selection and copy
        target = elem;
        origSelectionStart = elem.selectionStart;
        origSelectionEnd = elem.selectionEnd;
    } else {
        // must use a temporary form element for the selection and copy
        target = document.getElementById(targetId);
        if (!target) {
            var target = document.createElement("textarea");
            target.style.position = "absolute";
            target.style.left = "-9999px";
            target.style.top = "0";
            target.id = targetId;
            document.body.appendChild(target);
        }
        target.textContent = elem.textContent;
    }
    // select the content
    var currentFocus = document.activeElement;
    target.focus();
    target.setSelectionRange(0, target.value.length);
    
    // copy the selection
    var succeed;
    try {
    	  succeed = document.execCommand("copy");
    } catch(e) {
        succeed = false;
    }
    // restore original focus
    if (currentFocus && typeof currentFocus.focus === "function") {
        currentFocus.focus();
    }
    
    if (isInput) {
        // restore prior selection
        elem.setSelectionRange(origSelectionStart, origSelectionEnd);
    } else {
        // clear temporary content
        target.textContent = "";
    }
    return succeed;
}
input {
  width: 400px;
}
<input type="text" id="copyTarget" value="Text to Copy"> <button id="copyButton">Copy</button><br><br>
<input type="text" placeholder="Click here and press Ctrl-V to see clipboard contents">


এখানে আরও কিছু উন্নত ডেমো রয়েছে: https://jsfiddle.net/jender00/v9g1x0o6/

এবং, আপনি একটি প্রাক বিল্ট লাইব্রেরি পেতে পারেন যা ক্লিপবোর্ড.জেএস সহ এটি আপনার জন্য করে ।


পুরানো, উত্তরের partতিহাসিক অংশ

সুরক্ষা কারণে কোনও আধুনিক ব্রাউজার দ্বারা সরাসরি জাভাস্ক্রিপ্টের মাধ্যমে ক্লিপবোর্ডে অনুলিপি করার অনুমতি নেই। সর্বাধিক সাধারণ কাজটি হ'ল ক্লিপবোর্ডে অনুলিপি করার জন্য একটি ফ্ল্যাশ ক্ষমতা ব্যবহার করা যা কেবল প্রত্যক্ষ ব্যবহারকারীর ক্লিক দ্বারা ট্রিগার করা যায়।

ইতিমধ্যে উল্লিখিত হিসাবে, জিরো ক্লিপবোর্ডটি অনুলিপিটি করার জন্য ফ্ল্যাশ অবজেক্ট পরিচালনা করার জন্য কোডের একটি জনপ্রিয় সেট। আমি এটি ব্যবহার করেছি। যদি ব্রাউজিং ডিভাইসে ফ্ল্যাশ ইনস্টল করা থাকে (যা মোবাইল বা ট্যাবলেটকে দেয়) তবে এটি কাজ করে।


পরবর্তী সর্বাধিক সাধারণ কাজটি হ'ল ক্লিপবোর্ড-বদ্ধ পাঠ্যটিকে কেবল একটি ইনপুট ক্ষেত্রে রাখা, সেই ক্ষেত্রটিতে ফোকাসটি স্থানান্তর করা এবং ব্যবহারকারীকে পাঠ্যটি অনুলিপি করতে Ctrl+ টিপতে পরামর্শ দেওয়া C

পূর্ববর্তী স্ট্যাক ওভারফ্লো পোস্টগুলিতে ইস্যু এবং সম্ভাব্য কাজের চারপাশের অন্যান্য আলোচনাগুলি পাওয়া যাবে:


ফ্ল্যাশ ব্যবহারের জন্য আধুনিক বিকল্পের জন্য জিজ্ঞাসা করা এই প্রশ্নগুলি প্রচুর প্রশ্ন উত্সাহ পেয়েছে এবং সমাধানের কোনও উত্তর নেই (সম্ভবত কোনওটির অস্তিত্ব নেই বলে):


ক্লিপবোর্ড অ্যাক্সেস করার জন্য ইন্টারনেট এক্সপ্লোরার এবং ফায়ারফক্সের অ-মানক API ছিল, তবে তাদের আরও আধুনিক সংস্করণগুলি এই পদ্ধতিগুলিকে অবহেলা করেছে (সম্ভবত সুরক্ষার কারণে)।


সর্বাধিক সাধারণ ক্লিপবোর্ড সমস্যাগুলি সমাধান করার জন্য একটি "নিরাপদ" উপায় নিয়ে আসার চেষ্টা করার জন্য একটি আধুনিক মানের প্রচেষ্টা রয়েছে (সম্ভবত ফ্ল্যাশ সমাধানের মতো নির্দিষ্ট ব্যবহারকারীর ক্রিয়া প্রয়োজন) এটি দেখে মনে হচ্ছে এটি সর্বশেষে আংশিকভাবে প্রয়োগ করা যেতে পারে ফায়ারফক্স এবং ক্রোমের সংস্করণ, তবে আমি এখনও এটি নিশ্চিত করে নি।


1
এই সম্পাদিত পোস্টে ক্লিপবোর্ড.জেএস সবেমাত্র যুক্ত করা হয়েছিল। এটি একটি ভাল ইউটিলিটি যা আমি আগস্ট 2015 এ এই প্রশ্নের উত্তর হিসাবে অন্তর্ভুক্ত করেছি
একটি কোডার

1
@ এ্যাকডার - ক্লিপবোর্ড সমর্থন নিয়মিতভাবে পরিবর্তন করা হচ্ছে। উদাহরণস্বরূপ, ফায়ারফক্স কেবল সম্প্রতি (2015 সালের শেষের দিকে) এর document.execCommand("copy")জন্য এটির উপর নির্ভর করতে যথেষ্ট পরিস্থিতিতে সক্ষম করেছে। সুতরাং, আমি আমার উত্তরটি আপ টু ডেট রাখার চেষ্টা করছি (যা মূলত প্রায় ২ বছর আগে রচিত হয়েছিল)। পাঠ্যটি প্রাক-নির্বাচন করা এবং ব্যবহারকারীকে ম্যানুয়ালি Ctrl + C চাপতে বলা ছাড়া সাফারিটির জন্য আমাদের কাছে এখনও একটি নির্ভরযোগ্য সমাধান নেই, তবে কমপক্ষে অন্য কোথাও অগ্রগতি হচ্ছে।
jਫਰ00

1
ক্লিপবোর্ডের এপিআইগুলি সমর্থন করার জন্য এখানে একটি লিঙ্ক দেওয়া হয়েছে: caniuse.com/#feat=clipboard
L84

2
এফওয়াইআই, সাফারি রিলিজ নোটগুলির এই সেট অনুসারে , দেখা যাচ্ছে যে সাফারি 10 এখন সমর্থন করে document.execCommand("copy")তাই এই কোডটি এখন সাফারি 10 তে কাজ করা উচিত
jender00

1
@sebastiangodelet - সর্বজনীন ডোমেন।
jفر00

640

আপডেট 2020 : এই সমাধানটি ব্যবহার করে execCommand। যদিও এই উত্তরটি লেখার মুহুর্তে সেই বৈশিষ্ট্যটি ঠিক ছিল, এখন এটি অপ্রচলিত হিসাবে বিবেচিত হয় । এটি এখনও অনেকগুলি ব্রাউজারে কাজ করবে তবে সমর্থন বাদ দেওয়া হওয়ায় এর ব্যবহার নিরুত্সাহিত করা হয়েছে।

আরও একটি নন-ফ্ল্যাশ উপায় রয়েছে ( jPress00 এর উত্তরে উল্লিখিত ক্লিপবোর্ড এপিআই ছাড়াও )। আপনাকে পাঠ্যটি নির্বাচন করতে হবে এবং তারপরে পৃষ্ঠায় বর্তমানে যে পাঠ্যটি নির্বাচিত হয়েছে তা ক্লিপবোর্ডে অনুলিপি করতে কমান্ডটি কার্যকর করতে হবেcopy

উদাহরণস্বরূপ, এই ফাংশনটি উত্তীর্ণ উপাদানগুলির সামগ্রীটি ক্লিপবোর্ডে অনুলিপি করবে ( পয়েন্ট জিরোটো- র মন্তব্যগুলিতে পরামর্শের সাথে আপডেট হয়েছে ):

function copyToClipboard(element) {
    var $temp = $("<input>");
    $("body").append($temp);
    $temp.val($(element).text()).select();
    document.execCommand("copy");
    $temp.remove();
}

এটা এভাবে কাজ করে:

  1. একটি অস্থায়ীভাবে লুকানো পাঠ্য ক্ষেত্র তৈরি করে।
  2. উপাদানটির সামগ্রীটি সেই পাঠ্য ক্ষেত্রে অনুলিপি করে।
  3. পাঠ্য ক্ষেত্রের সামগ্রী নির্বাচন করে।
  4. মত কমান্ড কপি executes: document.execCommand("copy")
  5. অস্থায়ী পাঠ্য ক্ষেত্রটি সরিয়ে দেয়।

আপনি এখানে একটি দ্রুত ডেমো দেখতে পারেন:

function copyToClipboard(element) {
  var $temp = $("<input>");
  $("body").append($temp);
  $temp.val($(element).text()).select();
  document.execCommand("copy");
  $temp.remove();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p id="p1">P1: I am paragraph 1</p>
<p id="p2">P2: I am a second paragraph</p>
<button onclick="copyToClipboard('#p1')">Copy P1</button>
<button onclick="copyToClipboard('#p2')">Copy P2</button>
<br/><br/><input type="text" placeholder="Paste here for test" />

মূল সমস্যাটি হ'ল এই মুহুর্তে সমস্ত ব্রাউজার এই বৈশিষ্ট্যটি সমর্থন করে না, তবে আপনি এটিকে মূল বিষয়গুলিতে ব্যবহার করতে পারেন:

  • ক্রোম 43
  • ইন্টারনেট এক্সপ্লোরার 10
  • ফায়ারফক্স 41
  • সাফারি 10

আপডেট 1: এটি একটি খাঁটি জাভাস্ক্রিপ্ট সমাধান (কোনও jQuery নয়) দিয়েও অর্জন করা যেতে পারে:

function copyToClipboard(elementId) {

  // Create a "hidden" input
  var aux = document.createElement("input");

  // Assign it the value of the specified element
  aux.setAttribute("value", document.getElementById(elementId).innerHTML);

  // Append it to the body
  document.body.appendChild(aux);

  // Highlight its content
  aux.select();

  // Copy the highlighted text
  document.execCommand("copy");

  // Remove it from the body
  document.body.removeChild(aux);

}
<p id="p1">P1: I am paragraph 1</p>
<p id="p2">P2: I am a second paragraph</p>
<button onclick="copyToClipboard('p1')">Copy P1</button>
<button onclick="copyToClipboard('p2')">Copy P2</button>
<br/><br/><input type="text" placeholder="Paste here for test" />

লক্ষ্য করুন যে আমরা এখন # ছাড়াই আইডি পাস করি।

ম্যাডজোহান নীচের মন্তব্যে যেমন রিপোর্ট করেছেন, গুগল ক্রোমের cases৪- বিট সংস্করণ নিয়ে কিছু ক্ষেত্রে (স্থানীয়ভাবে ফাইল চালানো) কিছু অদ্ভুত সমস্যা রয়েছে। এই সমস্যাটি উপরের নন-জিক্যুরি সমাধানের সাথে স্থির হয়ে গেছে বলে মনে হচ্ছে।

ম্যাডজোহান সাফারিতে চেষ্টা করেছিলেন এবং সমাধানটি কাজ করেছে তবে ব্যবহারের document.execCommand('SelectAll')পরিবর্তে ব্যবহার করেছে .select()(চ্যাট এবং নীচের মন্তব্যে উল্লিখিত হিসাবে)।

পয়েন্টজিরোটো মন্তব্যগুলিতে যেমন উল্লেখ করেছে , কোডটি উন্নত হতে পারে তাই এটি সাফল্য / ব্যর্থতার ফলাফল ফিরিয়ে আনবে। আপনি এই jsFizz এ একটি ডেমো দেখতে পারেন ।


আপডেট: পাঠ্য ফর্ম্যাটটি কপি করুন

হচ্ছে একটি ব্যবহারকারী Stackoverflow স্প্যানিশ সংস্করণে নির্দিষ্ট কাজ করতে আক্ষরিক একটি উপাদান বিষয়বস্তু অনুলিপি করতে চান পুরোপুরি যদি উপরে উল্লিখিত সমাধান, কিন্তু তারা যে মহান কাজ করে না যদি আপনি ফর্ম্যাটের সাথে কপি করা টেক্সট পেস্ট করতে চান (যেমন এটি একটিতে অনুলিপি করা হয়েছে input type="text", ফর্ম্যাটটি "হারিয়ে গেছে")।

এর একটি সমাধান হ'ল সম্পাদনাযোগ্য কোনও সামগ্রীতে অনুলিপি করা divএবং তারপরে execCommandঅনুরূপভাবে এটি ব্যবহার করে অনুলিপি করা । এখানে একটি উদাহরণ রয়েছে - অনুলিপি বোতামে ক্লিক করুন এবং তারপরে নীচের সামগ্রী সম্পাদনাযোগ্য বাক্সে পেস্ট করুন:

function copy(element_id){
  var aux = document.createElement("div");
  aux.setAttribute("contentEditable", true);
  aux.innerHTML = document.getElementById(element_id).innerHTML;
  aux.setAttribute("onfocus", "document.execCommand('selectAll',false,null)"); 
  document.body.appendChild(aux);
  aux.focus();
  document.execCommand("copy");
  document.body.removeChild(aux);
}
#target {
  width:400px;
  height:100px;
  border:1px solid #ccc;
}
<p id="demo"><b>Bold text</b> and <u>underlined text</u>.</p>
<button onclick="copy('demo')">Copy Keeping Format</button> 

<div id="target" contentEditable="true"></div>

এবং jQuery এ, এটি এর মতো হবে:

function copy(selector){
  var $temp = $("<div>");
  $("body").append($temp);
  $temp.attr("contenteditable", true)
       .html($(selector).html()).select()
       .on("focus", function() { document.execCommand('selectAll',false,null); })
       .focus();
  document.execCommand("copy");
  $temp.remove();
}
#target {
  width:400px;
  height:100px;
  border:1px solid #ccc;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<p id="demo"><b>Bold text</b> and <u>underlined text</u>.</p>
<button onclick="copy('#demo')">Copy Keeping Format</button> 

<div id="target" contentEditable="true"></div>


5
আজব ... এখানে এটি কাজ করে তবে স্থানীয়ভাবে আমি এটি কাজ করতে পারি না 0o jquery-1.11.3 ক্রোম 43.0.2357.130 (64৪-বিট)
ম্যাডজোহান

2
@ মোদজোহন ঠিক আছে, আমি ইস্যুটি পুনরুত্পাদন করতে সক্ষম হয়েছি। এটি অদ্ভুত কারণ আমি local৪-বিট ক্রোমে কেবল স্থানীয় (ফাইল: //) এ পুনরুত্পাদন করতে সক্ষম হয়েছি। আমি একটি দ্রুত সমাধানও পেয়েছি যা আমার পক্ষে কাজ করে: jQuery এর পরিবর্তে সরল জাভাস্ক্রিপ্ট ব্যবহার করে। উত্তরটি আমি সেই কোড দিয়ে আপডেট করব। দয়া করে এটি পরীক্ষা করে দেখুন এবং এটি আপনার পক্ষে কাজ করে কিনা তা আমাকে জানান।
আলভারো মন্টোরো

1
এফডব্লিউআইডাব্লু - ডকুমেন্ট.এক্সেকমন্ড ("অনুলিপি") একটি বুলিয়ান (আইই, ক্রোম, সাফারি) প্রদান করে যা অনুলিপিটি সফল হয়েছিল কিনা তা নির্দেশ করে। ব্যর্থতায় ত্রুটি বার্তা প্রদর্শন করতে এটি ব্যবহার করা যেতে পারে। ফায়ারফক্স ব্যর্থতায় একটি ব্যতিক্রম ছুঁড়েছে (কমপক্ষে v39 এ) ত্রুটিটি পরিচালনা করার জন্য চেষ্টা / ক্যাপচারের প্রয়োজন।
পয়েন্টজিরোটো

3
কলটির aux.style.position = "fixed"; aux.style.top = 0;উপরে : নীচের লাইনগুলি যুক্ত করে পৃষ্ঠায় অক্স দৃশ্যমান রয়েছে তা নিশ্চিত না করা পর্যন্ত এটি আমার পক্ষে কাজ করে না appendChild
আরিসক্রিস

7
মূল jQuery বাস্তবায়ন লাইন ব্রেকগুলি সংরক্ষণে ব্যর্থ হয়েছে, কারণ এটি একটি ইনপুট উপাদান ব্যবহার করছে। পরিবর্তে একটি টেক্সটারিএ ব্যবহার করা এটি সমাধান করে।
থোমাসফুচস

37

ক্লিপবোর্ড.জেএস একটি দুর্দান্ত ইউটিলিটি যা ফ্ল্যাশ ব্যবহার না করে ক্লিপবোর্ডে পাঠ্য বা এইচটিএমএল ডেটা অনুলিপি করার অনুমতি দেয়। এটি ব্যবহার করা খুব সহজ; শুধু .js অন্তর্ভুক্ত করুন এবং এর মতো কিছু ব্যবহার করুন:

<button id='markup-copy'>Copy Button</button>

<script>
    document.getElementById('markup-copy').addEventListener('click', function() {
        clipboard.copy({
            'text/plain': 'Markup text. Paste me into a rich text editor.',
            'text/html': '<i>here</i> is some <b>rich text</b>'
        }).then(
            function(){console.log('success'); },
            function(err){console.log('failure', err);
        });
    });
</script>

clipboard.js GitHub থেকে হয়

15 ই জানুয়ারী, ২০১ Edit এ সম্পাদনা করুন: আগস্ট ২০১৫-এ পোস্ট করা আমার উত্তরটিতে একই এপিআইয়ের উল্লেখের জন্য শীর্ষের উত্তরটি আজ সম্পাদনা করা হয়েছিল previous আগের পাঠ্যটি ব্যবহারকারীদের জিরো ক্লিপবোর্ড ব্যবহার করার জন্য নির্দেশ দিচ্ছিল। কেবল পরিষ্কার হতে চাই যে আমি এটিকে jender00 এর উত্তর থেকে নয়, বরং অন্যভাবে।


ক্লিপবোর্ড-JS - হয়েছে অননুমোদিত লেখক বার্তা: স্থানান্তর অনুগ্রহ করে github.com/lgarron/clipboard-polyfill
ইয়েভগেনি Afanasyev

26

সরলতা চূড়ান্ত কুতর্ক হয়.
আপনি যদি না চান তবে পাঠ্যটি অনুলিপিটি দৃশ্যমান হোক:

jQuery:

$('button.copyButton').click(function(){
    $(this).siblings('input.linkToCopy').select();      
    document.execCommand("copy");
});

এইচটিএমএল:

<button class="copyButton">click here to copy</button>
<input class="linkToCopy" value="TEXT TO COPY"
style="position: absolute; z-index: -999; opacity: 0;" />

iPad এ কাজ বলে মনে হচ্ছে না, পরীক্ষা করা কিন্তু একটি প্রস্তাবিত সমাধান এখানে: stackoverflow.com/a/34046084
user1063287

এটি আমার পক্ষে কাজ করেছে, তবে অনুলিপি করা পাঠ্যের মধ্যে যদি ক্যারেজ রিটার্ন থাকে তবে আপনি তার পরিবর্তে ঠিক পাশাপাশি একটি টেক্সারিও ব্যবহার করতে পারেন।
অ্যালেক্স

13

লাইন ব্রেক সহ (আলভারো মন্টোরোর উত্তর উত্তরের)

var ClipboardHelper = {

    copyElement: function ($element)
    {
       this.copyText($element.text())
    },
    copyText:function(text) // Linebreaks with \n
    {
        var $tempInput =  $("<textarea>");
        $("body").append($tempInput);
        $tempInput.val(text).select();
        document.execCommand("copy");
        $tempInput.remove();
    }
};

ClipboardHelper.copyText('Hello\nWorld');
ClipboardHelper.copyElement($('body h1').first());

9

ক্লিপবোর্ডে পৃষ্ঠাতে অনুলিপি ইনপুট মানটির জন্য আপনি একটি বোতামে ক্লিক করে এই কোডটি ব্যবহার করতে পারেন

এটি এইচটিএমএল

<input type="text" value="xxx" id="link" class="span12" />
<button type="button" class="btn btn-info btn-sm" onclick="copyToClipboard('#link')">
    Copy Input Value
</button>

তারপরে এই এইচটিএমএল এর জন্য আমাদের অবশ্যই এই জিক্যুরি কোডটি ব্যবহার করতে হবে

function copyToClipboard(element) {
    $(element).select();
    document.execCommand("copy");
}

এটি এই প্রশ্নের সহজ সমাধান


8

ফ্ল্যাশ বা অন্য কোনও প্রয়োজনীয়তা ছাড়াই আরও ভাল পন্থা হ'ল ক্লিপবোর্ড.জেএস । আপনাকে যা করতে হবে তা হ'ল যে data-clipboard-target="#toCopyElement"কোনও বোতামে যুক্ত করা, এটি আরম্ভ করুন new Clipboard('.btn');এবং এটি ডিওএম এর সামগ্রীটি আইডি সহ toCopyElementক্লিপবোর্ডে অনুলিপি করবে । এটি এমন একটি স্নিপেট যা আপনার প্রশ্নে সরবরাহিত পাঠ্যটিকে একটি লিঙ্কের মাধ্যমে অনুলিপি করে।

যদিও এর একটি সীমাবদ্ধতা হ'ল এটি সাফারিটিতে কাজ করে না, তবে এটি মোবাইল ব্রাউজারগুলি সহ অন্যান্য সমস্ত ব্রাউজারে কাজ করে কারণ এটি ফ্ল্যাশ ব্যবহার করে না it

$(function(){
  new Clipboard('.copy-text');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>

<p id="content">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p>

<a class="copy-text" data-clipboard-target="#content" href="#">copy Text</a>


5
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link href="css/index.css" rel="stylesheet" />
    <script src="js/jquery-2.1.4.min.js"></script>
    <script>
        function copy()
        {
            try
            {
                $('#txt').select();
                document.execCommand('copy');
            }
            catch(e)
            {
                alert(e);
            }
        }
    </script>
</head>
<body>
    <h4 align="center">Copy your code</h4>
    <textarea id="txt" style="width:100%;height:300px;"></textarea>
    <br /><br /><br />
    <div align="center"><span class="btn-md" onclick="copy();">copy</span></div>
</body>
</html>

1
এটি কেবল টেক্সারিয়া এবং পাঠ্যবাক্সের জন্যই ব্যবহার করা যেতে পারে।
ভিগনেশ চিন্নায়ান

5
<div class="form-group">
    <label class="font-normal MyText">MyText to copy</label>&nbsp;
    <button type="button" class="btn btn-default btn-xs btnCopy" data="MyText">Copy</button>
</div>


$(".btnCopy").click(function () {
        var element = $(this).attr("data");
        copyToClipboard($('.' + element));
  });

function copyToClipboard(element) {
    var $temp = $("<input>");
    $("body").append($temp);
    $temp.val($(element).text()).select();
    document.execCommand("copy");
    $temp.remove();
}

চমৎকার কাজ। হয়তো যোগ .addClass("hidden")করার <input>ট্যাগ এটা ব্রাউজারে আপ দেখানো হয়েছে কিভাবে?
রোল্যান্ড ১১

5

ইনপুট ফিল্ডটি না থাকা খুব গুরুত্বপূর্ণ display: none। ব্রাউজারটি পাঠ্যটি নির্বাচন করবে না এবং তাই অনুলিপি করা হবে না। opacity: 0সমস্যাটি ঠিক করতে 0 পিএক্স প্রস্থ সহ ব্যবহার করুন ।


4

বিষয়বস্তু অনুলিপি করা এটি একটি সহজ পদ্ধতি

 <div id="content"> Lorepm ispum </div>
 <button class="copy" title="content">Copy Sorce</button>

function SelectContent(element) {
                        var doc = document
                            , text = doc.getElementById(element)
                            , range, selection
                        ;    
                        if (doc.body.createTextRange) {
                            range = document.body.createTextRange();
                            range.moveToElementText(text);
                            range.select();
                        } else if (window.getSelection) {
                            selection = window.getSelection();        
                            range = document.createRange();
                            range.selectNodeContents(text);
                            selection.removeAllRanges();
                            selection.addRange(range);

                        }
                         document.execCommand('Copy');
                    }
                    $(".copy").click(function(){

                         SelectContent( $(this).attr('title'));
                    });

4

jQuery সহজ সমাধান।

ব্যবহারকারীর ক্লিক দ্বারা ট্রিগার করা উচিত।

$("<textarea/>").appendTo("body").val(text).select().each(function () {
            document.execCommand('copy');
        }).remove();

3

আপনি সহজেই অনুলিপি লক্ষ্য উপলব্ধি করার জন্য এই lib ব্যবহার করতে পারেন!

https://clipboardjs.com/

ক্লিপবোর্ডে পাঠ্য অনুলিপি করা শক্ত হওয়া উচিত নয়। এটি কনফিগার করতে কয়েক ডজন পদক্ষেপ বা কয়েকশ কেবি লোড হওয়ার দরকার নেই। তবে সর্বোপরি, এটি ফ্ল্যাশ বা কোনও প্রস্ফুটিত কাঠামোর উপর নির্ভর করে না।

এই কারণেই ক্লিপবোর্ড.জেএস বিদ্যমান।

অথবা

https://github.com/zeroclipboard/zeroclipboard

http://zeroclipboard.org/

অদৃশ্য অ্যাডোব ফ্ল্যাশ মুভি এবং একটি জাভাস্ক্রিপ্ট ইন্টারফেস ব্যবহার করে জিরো ক্লিপবোর্ড লাইব্রেরি ক্লিপবোর্ডে পাঠ্য অনুলিপি করার সহজ উপায় সরবরাহ করে।


2

অনুলিপি করার পাঠ্যটি পাঠ্য ইনপুটগুলিতে রয়েছে, যেমন: <input type="text" id="copyText" name="copyText"> এবং উপরের বোতামে ক্লিক করে ক্লিপবোর্ডে অনুলিপি করা উচিত, তাই বোতামটি এর মতো: <button type="submit" id="copy_button" data-clipboard-target='copyText'>Copy</button> আপনার স্ক্রিপ্টটি এমন হওয়া উচিত:

<script language="JavaScript">
$(document).ready(function() {
var clip = new ZeroClipboard($("#copy_button"), {
  moviePath: "ZeroClipboard.swf"
}); 
});

</script>

সিডিএন ফাইলের জন্য

দ্রষ্টব্য : ZeroClipboard.swfএবং ZeroClipboard.js"ফাইলটি যেমন ফাংশনটি ব্যবহার করে আপনার ফাইলটি ঠিক একই ফোল্ডারে থাকা উচিত, বা আপনাকে <script src=""></script>আমাদের পৃষ্ঠাগুলির মতো অন্তর্ভুক্ত করতে হবে।


6
ফ্ল্যাশ জিওসিটিগুলির পথে চলছে।
একটি কোডার

2

প্রস্তাবিত বেশিরভাগ উত্তর অতিরিক্ত অস্থায়ী লুকানো ইনপুট উপাদান তৈরি করে s আজকাল বেশিরভাগ ব্রাউজারগুলি ডিভ কন্টেন্ট সম্পাদনা সমর্থন করে, তাই আমি এমন একটি সমাধান প্রস্তাব করি যা গোপন উপাদান তৈরি করে না, পাঠ্য বিন্যাস সংরক্ষণ করে এবং খাঁটি জাভাস্ক্রিপ্ট বা jQuery লাইব্রেরি ব্যবহার করে।

আমি মনে করতে পারি এমন কয়েকটি কোডের লাইন ব্যবহার করে এখানে একটি মিনিমালিস্ট কঙ্কাল বাস্তবায়ন:

//Pure javascript implementation:
document.getElementById("copyUsingPureJS").addEventListener("click", function() {
  copyUsingPureJS(document.getElementById("copyTarget"));
  alert("Text Copied to Clipboard Using Pure Javascript");
});

function copyUsingPureJS(element_id) {
  element_id.setAttribute("contentEditable", true);
  element_id.setAttribute("onfocus", "document.execCommand('selectAll',false,null)");
  element_id.focus();
  document.execCommand("copy");
  element_id.removeAttribute("contentEditable");
  
}

//Jquery:
$(document).ready(function() {
  $("#copyUsingJquery").click(function() {
    copyUsingJquery("#copyTarget");
  });
 

  function copyUsingJquery(element_id) {
    $(element_id).attr("contenteditable", true)
      .select()
      .on("focus", function() {
        document.execCommand('selectAll', false, null)
      })
      .focus()
    document.execCommand("Copy");
    $(element_id).removeAttr("contenteditable");
     alert("Text Copied to Clipboard Using jQuery");
  }
});
#copyTarget {
  width: 400px;
  height: 400px;
  border: 1px groove gray;
  color: navy;
  text-align: center;
  box-shadow: 0 4px 8px 0 gray;
}

#copyTarget h1 {
  color: blue;
}

#copyTarget h2 {
  color: red;
}

#copyTarget h3 {
  color: green;
}

#copyTarget h4 {
  color: cyan;
}

#copyTarget h5 {
  color: brown;
}

#copyTarget h6 {
  color: teal;
}

#pasteTarget {
  width: 400px;
  height: 400px;
  border: 1px inset skyblue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="copyTarget">
  <h1>Heading 1</h1>
  <h2>Heading 2</h2>
  <h3>Heading 3</h3>
  <h4>Heading 4</h4>
  <h5>Heading 5</h5>
  <h6>Heading 6</h6>
  <strong>Preserve <em>formatting</em></strong>
  <br/>
</div>

<button id="copyUsingPureJS">Copy Using Pure JavaScript</button>
<button id="copyUsingJquery">Copy Using jQuery</button>
<br><br> Paste Here to See Result
<div id="pasteTarget" contenteditable="true"></div>


2

ক্লিপবোর্ড-পলফিল লাইব্রেরি আধুনিক প্রতিশ্রুতি ভিত্তিক অ্যাসিনক্রোনাস ক্লিপবোর্ড এপিআইয়ের জন্য একটি পলিফিল।

সিএলআই-তে ইনস্টল করুন:

npm install clipboard-polyfill 

জেএস ফাইলে ক্লিপবোর্ড হিসাবে আমদানি করুন

window.clipboard = require('clipboard-polyfill');

উদাহরণ

আমি এটি একটি বান্ডলে ব্যবহার করছি require("babel-polyfill");এবং এটি ক্রোম 67 এ পরীক্ষিত। উত্পাদনের জন্য সমস্ত ভাল good


1

এইচটিএমএল কোড এখানে

    <input id="result" style="width:300px"/>some example text
    <button onclick="copyToClipboard('result')">Copy P1</button>
    <input type="text" style="width:400px" placeholder="Paste here for test" />

জেএস কোড:

     function copyToClipboard(elementId) {

                      // Create a "hidden" input
                      var aux = document.createElement("input");

                      aux.setAttribute("value", document.getElementById(elementId).value);
                      // Append it to the body
                      document.body.appendChild(aux);
                      // Highlight its content
                      aux.select();
                      // Copy the highlighted text
                      document.execCommand("copy");
                      // Remove it from the body
                      document.body.removeChild(aux);
                    }

এটি পরিবর্তন করুন: .ভাল .আইনার এইচটিএমএল
ওমর এন শামালি

1

আপনি এইচটিএমএল উপাদানটির পাঠ্য বাদে পৃথক পাঠ্য অনুলিপি করতে পারেন।

        var copyToClipboard = function (text) {
            var $txt = $('<textarea />');

            $txt.val(text)
                .css({ width: "1px", height: "1px" })
                .appendTo('body');

            $txt.select();

            if (document.execCommand('copy')) {
                $txt.remove();
            }
        };

0

খাঁটি জেএস, ইনলাইন অনক্লিক ছাড়াই জোড় শ্রেণীর জন্য "সামগ্রী - অনুলিপি বোতাম"। আরও আরামদায়ক হবে, যদি আপনার অনেক উপাদান থাকে)

(function(){

/* Creating textarea only once, but not each time */
let area = document.createElement('textarea');
document.body.appendChild( area );
area.style.display = "none";

let content = document.querySelectorAll('.js-content');
let copy    = document.querySelectorAll('.js-copy');

for( let i = 0; i < copy.length; i++ ){
  copy[i].addEventListener('click', function(){
    area.style.display = "block";
    /* because the classes are paired, we can use the [i] index from the clicked button,
    to get the required text block */
    area.value = content[i].innerText;
    area.select();
    document.execCommand('copy');   
    area.style.display = "none";

    /* decorative part */
    this.innerHTML = 'Cop<span style="color: red;">ied</span>';
    /* arrow function doesn't modify 'this', here it's still the clicked button */
    setTimeout( () => this.innerHTML = "Copy", 2000 );
  });
}

})();
hr { margin: 15px 0; border: none; }
<span class="js-content">1111</span>
<button class="js-copy">Copy</button>
<hr>
<span class="js-content">2222</span>
<button class="js-copy">Copy</button>
<hr>
<span class="js-content">3333</span>
<button class="js-copy">Copy</button>

পুরানো ব্রাউজার সমর্থন:


-1

দুজনেই কবজির মতো কাজ করবে :),

javascript:

function CopyToClipboard(containerid) {
if (document.selection) { 
    var range = document.body.createTextRange();
    range.moveToElementText(document.getElementById(containerid));
    range.select().createTextRange();
    document.execCommand("copy"); 

} else if (window.getSelection) {
    var range = document.createRange();
     range.selectNode(document.getElementById(containerid));
     window.getSelection().addRange(range);
     document.execCommand("copy");
     alert("text copied") 
}}

এইচটিএমএলেও,

<button id="button1" onclick="CopyToClipboard('div1')">Click to copy</button>

<div id="div1" >Text To Copy </div>

<textarea placeholder="Press ctrl+v to Paste the copied text" rows="5" cols="20"></textarea>

জ্যাকুয়েরি: https://paulund.co.uk/jquery-copy- ক্লিপবোর্ড

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.