document.execCommand copy命令无效或其他解决方案?

时间:2013-01-10 08:32:17

标签: javascript browser cross-browser

我正在做的是以编程方式从网页中选择所有文本然后复制它。 select all适用于execCommand,但副本不适用。

这是我的代码:

$.ajax({
    url: $('#url').val(),
    type: 'GET',
    success: function(res) {
        $('#result').html(res.responseText);
        $('#result').fadeIn('fast');


        $('#result').focus();
        $('#result').select();

        document.execCommand('selectall');

        // copy does not work ?
        document.execCommand('copy');

    }
});

Here is Example on JsBin

我也尝试使用ZeroClipboard之类的Flash解决方案,但似乎必须按下他们的flash对象/按钮显式来复制文本,而我想做{{1} } 没有用户按按钮。

有人能说出如何以编程方式复制文本吗?

1 个答案:

答案 0 :(得分:5)

复制命令曾在所有浏览器中受到保护,但IE(在其他浏览器中无效)。请求用户使用Ctrl + C是一种常见的解决方法。

自Firefox 41(2015年9月),Chrome 42(2015年4月)和Opera 29(2015年4月)以来,当从某些受信任的用户触发时,默认情况下,复制命令在大多数主要浏览器中都不可用。 -triggered)事件,例如响应按钮点击将被触发的事件。

来自MDN的compatibility table,  和W3C bug提供了进一步的信息。