Betrachten Sie die folgenden jsfiddle, wo der Benutzer auf ein div mit fettem Text klicken und dann eine Kopie (Strg + c Win cmd + c mac) zum Kopieren der HTML zu tun die Zwischenablage als HTML. Wenn Sie dann zum Beispiel in eine Google Mail einfügen, erhalten Sie die HTML-Formatierung.execCommand ('copy') schlägt auf Chrome unter OS X
Grundsätzlich ist die 'copyHtmlToClipboard' Funktion erstellt eine versteckte div, kopieren Sie die HTML es, wählt er mit document.createRange und ruft dann document.execCommand ('Kopie')
function copyHtmlToClipboard(html) {
var div = document.createElement("div");
div.style.opacity = 0;
div.style.position = "absolute";
div.style.pointerEvents = "none";
div.style.zIndex = -1;
div.setAttribute('tabindex', '-1'); // so it can be focused
div.innerHTML = html;
document.body.appendChild(div);
var focused=document.activeElement;
div.focus();
window.getSelection().removeAllRanges();
var range = document.createRange();
// not using range.selectNode(div) as that makes chrome add an extra <br>
range.setStartBefore(div.firstChild);
range.setEndAfter(div.lastChild);
//range.selectNode(div);
window.getSelection().addRange(range);
var ok=false;
try {
ok = document.execCommand('copy');
} catch (err) {
console.log(err);
}
if (!ok) console.log('execCommand failed!');
window.getSelection().removeAllRanges();
document.body.removeChild(div);
focused.focus();
}
On Fenster Chrome/Firefox das funktioniert gut.
Jedoch auf Mac Chrome execCommand gibt false zurück.
Wie kann ich diesen Code auf dem Mac arbeiten lassen?
Thx!
https://clipboardjs.com/- http://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript – mplungjan