ইন্টারনেট এক্সপ্লোরারে আমি ক্লিপবোর্ড অ্যাক্সেস করতে ক্লিপবোর্ড ডেটা অবজেক্টটি ব্যবহার করতে পারি। ফায়ারফক্স, সাফারি এবং / অথবা ক্রোমে আমি কীভাবে এটি করতে পারি?
ইন্টারনেট এক্সপ্লোরারে আমি ক্লিপবোর্ড অ্যাক্সেস করতে ক্লিপবোর্ড ডেটা অবজেক্টটি ব্যবহার করতে পারি। ফায়ারফক্স, সাফারি এবং / অথবা ক্রোমে আমি কীভাবে এটি করতে পারি?
উত্তর:
বেশিরভাগ আধুনিক ব্রাউজার ব্যবহার করে সহজেই এটি করার একটি উপায় রয়েছে
document.execCommand('copy');
এটি বর্তমানে নির্বাচিত পাঠ্যটি অনুলিপি করবে। আপনি একটি পাঠ্যআরিয়া বা ইনপুট ক্ষেত্র ব্যবহার করে নির্বাচন করতে পারেন
document.getElementById('myText').select();
অদৃশ্যভাবে পাঠ্যের অনুলিপি করতে আপনি দ্রুত একটি পাঠ্যআরিয়া তৈরি করতে পারেন, বাক্সে পাঠ্যটি সংশোধন করতে পারেন, এটি নির্বাচন করুন, অনুলিপি করুন এবং তারপরে পাঠ্যআরিয়া মুছুন। বেশিরভাগ ক্ষেত্রে এই পাঠ্যআরিয়া এমনকি স্ক্রিনে ফ্ল্যাশ করবে না।
সুরক্ষার কারণে, ব্রাউজারগুলি কেবল তখনই আপনাকে অনুলিপি করার অনুমতি দেয় যখন কোনও ব্যবহারকারী কোনও ধরণের পদক্ষেপ নেয় (যেমন, একটি বোতামে ক্লিক করা)। এটি করার একটি উপায় হ'ল এইচটিএমএল বোতামটিতে অনক্লিক ইভেন্ট যুক্ত করা যা পাঠ্যটি অনুলিপি করে এমন একটি পদ্ধতিতে কল করে।
একটি সম্পূর্ণ উদাহরণ:
function copier(){
document.getElementById('myText').select();
document.execCommand('copy');
}
<button onclick="copier()">Copy</button>
<textarea id="myText">Copy me PLEASE!!!</textarea>
সুরক্ষার কারণে, ফায়ারফক্স আপনাকে ক্লিপবোর্ডে পাঠ্য স্থান দেওয়ার অনুমতি দেয় না। তবে, ফ্ল্যাশ ব্যবহার করে একটি ওয়ার্ক-এভার উপলব্ধ রয়েছে।
function copyIntoClipboard(text) {
var flashId = 'flashId-HKxmj5';
/* Replace this with your clipboard.swf location */
var clipboardSWF = 'http://appengine.bravo9.com/copy-into-clipboard/clipboard.swf';
if(!document.getElementById(flashId)) {
var div = document.createElement('div');
div.id = flashId;
document.body.appendChild(div);
}
document.getElementById(flashId).innerHTML = '';
var content = '<embed src="' +
clipboardSWF +
'" FlashVars="clipboard=' + encodeURIComponent(text) +
'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
document.getElementById(flashId).innerHTML = content;
}
একমাত্র অসুবিধা হ'ল এর জন্য ফ্ল্যাশ সক্ষম হওয়া দরকার।
উত্স বর্তমানে মারা গেছে: http://bravo9.com/j Journal / copying-text-into-the-clipboard-with-javascript-in-firefox-safari-ie-opera-292559a2-cc6c-4ebf-9724-d23e8bc5ad8a/ ( এবং তাই এটি গুগল ক্যাশে )
অনলাইন স্প্রেডশীটগুলি Ctrl + C, Ctrl + V ইভেন্টগুলি লুকানো হয় এবং একটি লুকানো টেক্সটরিয়া নিয়ন্ত্রণে ফোকাস স্থানান্তর করে এবং হয় অনুলিপি করতে নকল ক্লিপবোর্ডের বিষয়বস্তুগুলিতে সেট করুন বা ইভেন্টটি পেস্ট শেষ হওয়ার পরে তার সামগ্রীগুলি পড়ুন।
এছাড়াও দেখুন জাভাস্ক্রিপ্ট ব্যবহার করে ফায়ারফক্স, সাফারি এবং ক্রোমে ক্লিপবোর্ড পড়া কি সম্ভব?
এটি গ্রীষ্ম 2015, এবং ফ্ল্যাশকে ঘিরে এতটা অশান্তি নিয়ে আমি ভেবেছিলাম যে আমি এই প্রশ্নের নতুন উত্তর যুক্ত করব যা এর পুরোপুরি ব্যবহার এড়িয়ে চলে।
clipboard.js একটি দুর্দান্ত ইউটিলিটি যা ক্লিপবোর্ডে পাঠ্য বা এইচটিএমএল ডেটা অনুলিপি করার অনুমতি দেয়। এটি ব্যবহার করা খুব সহজ, কেবল .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 গিটহাব এও রয়েছে on
2017 এ আপনি এটি করতে পারেন (এটি বলার কারণ এই থ্রেডটি প্রায় 9 বছরের পুরানো!)
function copyStringToClipboard (string) {
function handler (event){
event.clipboardData.setData('text/plain', string);
event.preventDefault();
document.removeEventListener('copy', handler, true);
}
document.addEventListener('copy', handler, true);
document.execCommand('copy');
}
এবং এখন কপি copyStringToClipboard('Hello World')
আপনি যদি setData
লাইনটি লক্ষ্য করেছেন , এবং আপনি যদি বিভিন্ন ডেটা ধরণের সেট করতে পারেন তবে অবাক হন উত্তরটি হ্যাঁ।
.select()
এটি কল করার আগে একটি ইনপুট বাক্সে চালানো দরকার ।
ফায়ারফক্স আপনাকে ক্লিপবোর্ডে ডেটা সংরক্ষণের অনুমতি দেয় তবে সুরক্ষা জড়িত কারণে এটি ডিফল্টরূপে অক্ষম করা হয়। "ক্লিপবোর্ডে জাভাস্ক্রিপ্ট অ্যাক্সেস প্রদান করা" তে এটি কীভাবে সক্ষম করবেন তা দেখুন মোজিলা ফায়ারফক্স জ্ঞান ভিত্তিতে ।
আপনার প্রচুর ব্যবহারকারী রয়েছেন এবং তাদের ব্রাউজারটি কনফিগার করতে কোনও বিকল্প না থাকলে অ্যামডফান প্রস্তাবিত সমাধানটি সেরা। যদিও আপনি ক্লিপবোর্ডটি উপলব্ধ কিনা তা পরীক্ষা করে দেখতে এবং সেটিংস পরিবর্তন করার জন্য একটি লিঙ্ক সরবরাহ করতে পারেন, যদি ব্যবহারকারীরা প্রযুক্তিবিদ হন। জাভাস্ক্রিপ্ট সম্পাদক টিনিএমসিই এই পদ্ধতির অনুসরণ করে।
কপিআইন্টোক্লিপবোর্ড () ফাংশন ফ্ল্যাশ 9 এর জন্য কাজ করে, তবে এটি ফ্ল্যাশ প্লেয়ার 10 এর মুক্তির মাধ্যমে ভেঙে গেছে বলে মনে হচ্ছে নতুন ফ্ল্যাশ প্লেয়ারের সাথে কাজ করে এমন একটি সমাধান এখানে দেওয়া হয়েছে:
http://bowser.macminicolo.net/~jhuckaby/zeroclipboard/
এটি একটি জটিল সমাধান, তবে এটি কাজ করে।
আমাকে বলতে হবে যে এর সমাধানগুলির কোনওটিই সত্যই নয় কাজ করে না। আমি গৃহীত উত্তর থেকে ক্লিপবোর্ড সমাধানটি চেষ্টা করেছি এবং এটি ফ্ল্যাশ প্লেয়ার 10 এর সাথে কাজ করে না। আমি জিরো ক্লিপবোর্ডও চেষ্টা করে দেখেছি এবং কিছুক্ষণের জন্য আমি এতে খুব খুশি হয়েছিল।
আমি বর্তমানে এটি নিজের সাইটে ব্যবহার করছি ( http://www.blogtrog.com) ), তবে আমি এটির সাথে অদ্ভুত বাগগুলি লক্ষ্য করছি। জিরো ক্লিপবোর্ড যেভাবে কাজ করে তা হ'ল এটি আপনার পৃষ্ঠায় কোনও উপাদানটির শীর্ষের উপরে একটি অদৃশ্য ফ্ল্যাশ অবজেক্ট রাখে। আমি খুঁজে পেয়েছি যে যদি আমার উপাদানটি সরানো হয় (যেমন যখন ব্যবহারকারী উইন্ডোটির আকার পরিবর্তন করে এবং আমি জিনিসগুলি ঠিকঠাক করে রাখি), জিরো ক্লিপবোর্ড ফ্ল্যাশ অবজেক্টটি ভয়াবহ থেকে বেরিয়ে আসে এবং অবজেক্টটিকে আর আবরণ না করে। আমার সন্দেহ হয় এটি সম্ভবত এখনও এটি বসে ছিল যেখানে এটি মূলত ছিল। তাদের কোড রয়েছে যা এটিকে থামাতে হবে, বা এটি উপাদানটিতে পুনরায় লাগবে, তবে এটি ভালভাবে কাজ করছে বলে মনে হচ্ছে না।
সুতরাং ... ব্লগট্রোগের পরবর্তী সংস্করণে, আমি অনুমান করি যে আমি বন্যের মধ্যে দেখা অন্যান্য সমস্ত কোড হাইলাইটারগুলির সাথে স্যুট অনুসরণ করব এবং আমার অনুলিপি ক্লিপবোর্ড বোতামটি সরিয়ে দেব। :-(
(আমি লক্ষ্য করেছি যে ক্লিপবোর্ডে dp.syntaxhiglitter এর অনুলিপিটি এখন নষ্ট হয়ে গেছে))
খুব পুরানো প্রশ্নের উপায় কিন্তু আমি এই উত্তরটি কোথাও দেখতে পাইনি ...
এই লিঙ্কটি পরীক্ষা করুন:
http://kb.mozillazine.org/Granting_JavaScript_access_to_the_clipboard
সবাই যেমন বলেছিল, সুরক্ষার কারণে ডিফল্টভাবে অক্ষম করা হয়। উপরের লিঙ্কটি কীভাবে এটি সক্ষম করতে হয় তার নির্দেশাবলী দেখায় (ফায়ারফক্সে কনফিগার করে অথবা ইউজার.জেএস)।
ভাগ্যক্রমে "AllowClipboardHelper" নামে একটি প্লাগইন রয়েছে যা কয়েকটি ক্লিকের সাহায্যে জিনিসগুলিকে আরও সহজ করে তোলে। তবে আপনাকে এখনও ফায়ার ফক্সে অ্যাক্সেস সক্ষম করতে আপনার ওয়েবসাইট দর্শকদের নির্দেশ দিতে হবে ruct
আধুনিক ডকুমেন্ট.এক্সেকমন্ড ("অনুলিপি") এবং jQuery ব্যবহার করুন। এই স্ট্যাকওভারফ্লো উত্তরটি দেখুন
var ClipboardHelper = { // as Object
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());
// JQUERY DOCUMENT
;(function ( $, window, document, undefined ) {
var ClipboardHelper = {
copyElement: function ($element)
{
this.copyText($element.text())
},
copyText:function(text) // Linebreaks with \n
{
var $tempInput = $("<textarea>");
$("body").append($tempInput);
//todo prepare Text: remove double whitespaces, trim
$tempInput.val(text).select();
document.execCommand("copy");
$tempInput.remove();
}
};
$(document).ready(function()
{
var $body=$('body');
$body.on('click', '*[data-copy-text-to-clipboard]', function(event)
{
var $btn=$(this);
var text=$btn.attr('data-copy-text-to-clipboard');
ClipboardHelper.copyText(text);
});
$body.on('click', '.js-copy-element-to-clipboard', function(event)
{
ClipboardHelper.copyElement($(this));
});
});
})( jQuery, window, document );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span data-copy-text-to-clipboard=
"Hello
World">
Copy Text
</span>
<br><br>
<span class="js-copy-element-to-clipboard">
Hello
World
Element
</span>
আমি গিথুবের ক্লিপিকে আমার প্রয়োজনগুলির জন্য, সহজ ফ্ল্যাশ-ভিত্তিক বোতামটি ব্যবহার করেছি। ঠিকঠাক কাজ করে, যদি কারও স্টাইলিংয়ের প্রয়োজন না হয় এবং সার্ভার-সাইডে আগে কী কী আটকানো যায় তা withোকাতে সন্তুষ্ট হয় ।
ফ্ল্যাশ সমাধানে সামান্য উন্নতি হ'ল সুইফবজেক্ট ব্যবহার করে ফ্ল্যাশ 10 সনাক্ত করা:
http://code.google.com/p/swfobject/
এবং তারপরে এটি যদি ফ্ল্যাশ 10 হিসাবে দেখায় তবে জাভাস্ক্রিপ্ট ব্যবহার করে শকওয়েভ বস্তুটি লোড করার চেষ্টা করুন। শিংওয়ে ক্লিপবোর্ডে (সমস্ত সংস্করণে) লিপোর অনুলিপি করে কপিটোক্লিপবোর্ড () কমান্ডটি ব্যবহার করে / পড়তে পারে।
http://www.rodsdot.com/ee/cross_browser_clipboard_copy_with_pop_over_message.asp ফ্ল্যাশ 10 এবং সমস্ত ফ্ল্যাশ সক্ষম ব্রাউজারগুলির সাথে কাজ করে।
এছাড়াও পৃষ্ঠার স্ক্রোলিং সম্পর্কে উল্লিখিত বাগটি এড়ানোর জন্য জিরো ক্লিপবোর্ড আপডেট করা হয়েছে যার ফলে ফ্ল্যাশ মুভিটি সঠিক স্থানে না থেকে যায়।
যেহেতু এই পদ্ধতিটি "অনাবশ্যক" ব্যবহারকারীকে এটি অনুলিপি করতে একটি বোতামে ক্লিক করতে হবে এটি ব্যবহারকারীর পক্ষে সুবিধাজনক এবং খারাপ কিছু ঘটছে না।
নির্বাচন সংরক্ষণ করে মেমোরি গ্লোবাল ভেরিয়েবল তৈরি করার চেষ্টা করুন, তারপরে অন্যান্য ফাংশনটি ভেরিয়েবলটি অ্যাক্সেস করতে পারে এবং উদাহরণ হিসাবে একটি পেস্ট করতে পারে ..
var memory = '';//outside the functions but within the script tag.
function moz_stringCopy(DOMEle,firstPos,secondPos) {
var copiedString = DOMEle.value.slice(firstPos, secondPos);
memory = copiedString;
}
function moz_stringPaste(DOMEle, newpos) {
DOMEle.value = DOMEle.value.slice(0,newpos) + memory + DOMEle.value.slice(newpos);
}
আপনি যদি ফ্ল্যাশ সমর্থন করেন তবে আপনি https://everyplay.com/assets/clipboard.swf ব্যবহার করতে পারেন এবং পাঠ্য সেট করতে ফ্ল্যাশভার্স পাঠ্যটি ব্যবহার
https://everyplay.com/assets/clipboard.swf?text=It%20Works
আমি অনুলিপি করার জন্য যাকে ব্যবহার করি তা হ'ল এবং আপনি যে বিকল্পগুলি ব্যবহার করতে পারেন তা সমর্থন না করলে আপনি অতিরিক্ত হিসাবে সেট করতে পারেন:
ইন্টারনেট এক্সপ্লোরার জন্য: উইন্ডো.ক্লিপবোর্ডডেটা.সেটটাটা (ডেটাফর্ম্যাট, টেক্সট) এবং উইন্ডো.clipboardData.getData (ডেটা ফর্ম্যাট)
আপনি ডেটা ফর্ম্যাট এর পাঠ্য এবং url ব্যবহার করতে ডেটা এবং সেটডেটা পেতে পারেন।
এবং ডেটা মুছতে:
আপনি ডেটাফর্ম্যাট ফাইল, এইচটিএমএল, চিত্র, পাঠ্য এবং URL ব্যবহার করতে পারেন। পিএস: আপনার উইন্ডো.ক্লিপবোর্ডডাটা ক্যালারিডাটা (ডেটাফর্ম্যাট) ব্যবহার করা দরকার;
এবং অন্যান্য thats উইন্ডো.ক্লিপবোর্ড ডেটা এবং swf ফ্ল্যাশ ফাইল সমর্থন করে না আপনি উইন্ডো এবং ম্যাক এর কমান্ড + সি জন্য আপনার কীবোর্ডের নিয়ন্ত্রণ + সি বোতামটি ব্যবহার করতে পারেন
অ্যাডন কোড থেকে:
যদি অন্য কেউ ক্রোম কোড থেকে এটি কীভাবে করবেন তা সন্ধান করছে, আপনি এখানে বর্ণিত হিসাবে এনএসআইসিপ্লিপবোর্ড হেল্পার ইন্টারফেসটি ব্যবহার করতে পারেন: https://developer.mozilla.org/en-US/docs/Using_the_Clipboard
ব্যবহার document.execCommand('copy')
। এর সাম্প্রতিক সংস্করণে সমর্থিত Chrome
, Firefox
, Edge
, এবং Safari
।
function copyText(text){
function selectElementText(element) {
if (document.selection) {
var range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
} else if (window.getSelection) {
var range = document.createRange();
range.selectNode(element);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}
}
var element = document.createElement('DIV');
element.textContent = text;
document.body.appendChild(element);
selectElementText(element);
document.execCommand('copy');
element.remove();
}
var txt = document.getElementById('txt');
var btn = document.getElementById('btn');
btn.addEventListener('click', function(){
copyText(txt.value);
})
<input id="txt" value="Hello World!" />
<button id="btn">Copy To Clipboard</button>
ক্লিপবোর্ডের এপিআই নকশাকে ডিজাইন করা হয়েছে document.execCommand
। সাফারি এখনও সহায়তায় কাজ করছে যাতে আপনার নির্দিষ্ট ফসল স্থির না হওয়া এবং সাফারি বাস্তবায়ন শেষ না হওয়া পর্যন্ত ফলব্যাক সরবরাহ করা উচিত।
const permalink = document.querySelector('[rel="bookmark"]');
const output = document.querySelector('output');
permalink.onclick = evt => {
evt.preventDefault();
window.navigator.clipboard.writeText(
permalink.href
).then(() => {
output.textContent = 'Copied';
}, () => {
output.textContent = 'Not copied';
});
};
<a href="/programming/127040/" rel="bookmark">Permalink</a>
<output></output>
সুরক্ষার কারণে ক্লিপবোর্ড Permissions
থেকে ক্লিপবোর্ড পড়া এবং লেখার প্রয়োজন হতে পারে। স্নিপেট যদি SO এ কাজ না করে তবে এটিকে শট চালু করুন localhost
বা অন্যথায় বিশ্বস্ত ডোমেন দিন।
@ ডেভিড থেকে স্টুডিও ২০১২-এর দুর্দান্ত উত্তরটি তৈরি করা, এটি সাফারি, এফএফ এবং Chrome এ কাজ করে। এটি textarea
স্ক্রিনটিকে অফ-স্ক্রিন রেখে কোনও ঝলকানি ঘটতে পারে না তাও নিশ্চিত করে ।
// ================================================================================
// ClipboardClass
// ================================================================================
var ClipboardClass = (function() {
function copyText(text) {
// Create temp element off-screen to hold text.
var tempElem = $('<textarea style="position: absolute; top: -8888px; left: -8888px">');
$("body").append(tempElem);
tempElem.val(text).select();
document.execCommand("copy");
tempElem.remove();
}
// ============================================================================
// Class API
// ============================================================================
return {
copyText: copyText
};
})();
copy
, developer.chrome.com/devtools/docs/commandline-api