
OK, so today i tried to use jQuery (and plain JavaScript) to automate the process of copying to clipboard which you all know can be easily done by right click > copy or by pressing CTRL+C. How copying to clipboard generally works is that you can simply call an exec copy command to get the current selection to the clipboard. However, it seems the only browser that supports this is IE. Now, we have a workaround to use a Flash SWF file to run and get the selection to the clipboard this way. There are jQuery plugins you can use and as I see it you have the following four options.
Note: My advice would be to use 3. The copy text workaround as it can be painful to try and get the other plugins working.
1. zClip
zClip only works on hyperlinks.
{
//for IE ONLY!
window.clipboardData.setData('Text',str);
}
2. Zero Clipboard
A pretty nifty clipboard plugin: Download Page.
clip = new ZeroClipboard.Client();
clip.setHandCursor( true );
clip.addEventListener('load', my_load);
clip.addEventListener('mouseOver', my_mouse_over);
clip.addEventListener('complete', my_complete);
clip.glue( 'd_clip_button' );
}
3. Copy Text Workaround
JQUERY CODE
//store nodepath value to clipboard (copy to top of page)
$('li').live('click', function(){
//console.log($('#pathtonode').html()+ " copied to window");
var path = $('#pathtonode').html();
path = path.replace(/ > /g,".");
//console.log(path);
addtoppath(path);
});
//initially hide copy window
$('#toppathwrap').hide();
function addtoppath(path) {
//console.log(path);
$('#copypath').val(path);
$('#toppathwrap').show();
$('#copypath').focus();
$('#copypath').select();
}
});
And for dynamic DOM elements:
.find('a')
.livequery('click', function() {
$(this)
.blur();
//console.log('copied to copy window');
var nodetext = $('#id-of-element-to-copy').html();
$('#copypath input').focus();
$('#copypath input').select();
return false;
});
HTML CODE
<textarea id="copypath"></textarea>
</div>
CSS CODE
4. David Walsh Tutorial
function copy(inElement) {
if (inElement.createTextRange) {
var range = inElement.createTextRange();
if (range && BodyLoaded==1)
range.execCommand('Copy');
} else {
var flashcopier = 'flashcopier';
if(!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '<embed src="_clipboard.swf" FlashVars="clipboard='+escape(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
document.getElementById(flashcopier).innerHTML = divinfo;
}
}



Pingback: JIRA: Emergencias - Cartilla Medica - Desarrollo
Pingback: jQuery copy to clipboard, for multiple links. Integrated with ZeroClipboard javascript. Cross browser video