variable texto tabla script portapapeles para link copiar boton javascript jquery clipboard

javascript - texto - Copiar imagen al portapapeles



javascript copiar (5)

Bueno, esta es mi primera publicación aquí con una respuesta, supongo :)

Actualmente estoy usando el componente de navegador web cefsharp uno de mi proyecto, cefsharp se ejecuta en un navegador basado en Chrome y quiero copiar el elemento img uno de la página web

Con cefsharp puede manipular javascript solo del navegador, por lo que creo que podemos manejarlo usando el elemento lienzo.

/* ''cause of lorempixel timeout, i used img onload function. */ function copyImage() { var imgCap = document.getElementById(''imgCap''); var imgCanvas = document.createElement(''canvas''); imgCanvas.id = ''imgCanvas''; imgCanvas.height = 40; imgCanvas.width = 120; document.body.appendChild(imgCanvas); var originalContext = imgCanvas.getContext(''2d''); originalContext.drawImage(imgCap, 0, 0); //return imgCanvas.toDataURL(); } //document.onload = copyImage();

<img id="imgCap" src="http://lorempixel.com/120/40" onload="copyImage();"/>

con return imgCanvas.toDataURL(); puede obtener un valor codificado en base64 y usarlo donde desee.

este es mi código cefsharp, está funcionando.

string copyImageOtClipboardScript = "(function(){ try{var imgCap = document.getElementById(''imgCap''); var imgCanvas = document.createElement(''canvas''); imgCanvas.id = ''imgCanvas''; imgCanvas.height = 40; imgCanvas.width = 120; document.body.appendChild(imgCanvas); var originalContext = imgCanvas.getContext(''2d''); originalContext.drawImage(imgCap, 0, 0); return imgCanvas.toDataURL(); }catch(e){ alert(e); } })();"; var task = chromeBrowser.EvaluateScriptAsync(copyImageOtClipboardScript).ContinueWith(x => { var resp = x.Result; if (resp.Success) { this.Invoke((MethodInvoker)delegate { Bitmap bmp = null; string captchaResult = "", captchaBase64; var bytes = Convert.FromBase64String(resp.Result.ToString().Replace("data:image/png;base64,", "")); using (var imageFile = new FileStream("temp_captcha.png", FileMode.Create)) { imageFile.Write(bytes, 0, bytes.Length); imageFile.Flush(); } }); } });

Aparentemente, ¿no puede (todavía) copiar programáticamente una imagen al portapapeles desde una aplicación web de JavaScript?

Intenté copiar un texto en el portapapeles y funcionó.

Ahora me gustaría copiar una imagen y después de presionar ctrl + v para pegar en Word o Excel o Paint.

$(function() { $("#btnSave").click(function() { html2canvas($("#container1"), { onrendered: function(canvas) { theCanvas = canvas; document.body.appendChild(canvas); Canvas2Image.saveAsPNG(canvas); $("#img-out").append(canvas); } }); }); });


Busqué en Internet y no pude encontrar una solución a esto, así que seguí adelante y experimenté. Trabajó con éxito en todos los navegadores:

El HTML que estoy usando para probar es:

<div class="copyable"> <img src="images/sherlock.jpg" alt="Copy Image to Clipboard via Javascript."/> </div> <div class="copyable"> <img src="images/stark.jpg" alt="Copy Image to Clipboard via Javascript."/> </div>

El código JavaScript / jQuery se ve así:

<script> //Cross-browser function to select content function SelectText(element) { var doc = document; if (doc.body.createTextRange) { var range = document.body.createTextRange(); range.moveToElementText(element); range.select(); } else if (window.getSelection) { var selection = window.getSelection(); var range = document.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); } } $(".copyable").click(function (e) { //Make the container Div contenteditable $(this).attr("contenteditable", true); //Select the image SelectText($(this).get(0)); //Execute copy Command //Note: This will ONLY work directly inside a click listenner document.execCommand(''copy''); //Unselect the content window.getSelection().removeAllRanges(); //Make the container Div uneditable again $(this).removeAttr("contenteditable"); //Success!! alert("image copied!"); }); </script>

También he subido a GITHub: https://github.com/owaisafaq/copier-js


Consulte esta guía para copiar y pegar con JavaScript: https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/

De acuerdo con esto, Chrome, Safari y Firefox admiten copiar imágenes junto con texto plano, mientras que IE solo permite copiar texto. La página vinculada anteriormente describe cómo este servicio utiliza una extensión para agregar esta funcionalidad a un menú contextual, pero parece que varios navegadores admiten la copia programática de imágenes.