stay hungry stay foolish

js复制文本到剪贴板

var Util = {
	//获取选中的文本
    getSelectedText: function() {
        if (document.selection) {
            return document.selection.createRange().text;
        } else if (window.getSelection) {
            return window.getSelection().toString();
        }
    },
    //选中元素中的文本
    select: function(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);
        }
    },
    //复制文本到剪贴板
    copy: function(value) {
        var element = document.createElement('SPAN');
        element.textContent = value;
        document.body.appendChild(element);
        this.select(element);
        if (document.execCommand) {
            document.execCommand('copy');
        } else {
            window.clipboardData.setData('text', value);
        }
        element.remove ? element.remove() : element.removeNode(true);
    }
}

需要注意的是,copy操作必须用户手动触发某个点击事件或者触摸事件才能复制成功,也就是说必须在点击或者触摸的回调事件内执行copy操作,类似 IOS 中音频播放的触发。