2013-01-10 36 views
3

我正在做的是以编程方式从网页选择所有文本,然后复制它。选择全部与execCommand一起使用,但复制不。document.exec命令复制命令不起作用或其他解决方案?

这里是我的代码:

$.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对象/按钮明确到复制文本,而我想做zeroclip.setText('whatever');没有用户按按钮。

任何人都可以告诉如何以编程方式复制文本?

+0

也许,你可以做一些我在这里提到的: [已解决:文档execCommand复制不与AJAX工作](http://stackoverflow.com/questions/43380921/not-able-to-copy-a-link - 直接当我使用ajax/43381458#43381458) –

回答

4

复制命令用于在所有浏览器中保护,但IE(它不适用于其他浏览器)。请求用户使用Ctrl + C是一个常用的解决方法。

从Firefox 41(2015年9月),Chrome 42(2015年4月)和Opera 29(2015年4月)开始,复制命令应该在大多数主流浏览器默认情况下可用,用户触发)事件,例如响应按钮点击而触发的事件。

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

+4

是的,但我不想自己按Ctrl + C,寻找解决方案来编程 – Dev01

+1

没有提升权限是不可能的正如在这个回答中提到的'execCommand'),因为允许任意剪贴板注入被视为安全漏洞(“剪贴板中毒”)。我正在与浏览器供应商合作,至少在现代常青浏览器中启用“点击复制”功能,以便我们最终退出ZeroClipboard(或将其用作旧版浏览器的polyfill)。 –

+0

@ JamesM.Greene,您能链接到您向浏览器供应商提交的任何错误吗? –