复制到没有Flash的剪贴板

Bla*_*Sun 90 javascript clipboard jquery

我找到了许多复制到剪贴板的解决方案,但它们都可以使用闪存或网站方面.我正在寻找方法复制到剪贴板自动,没有闪存和用户方面,它是用户脚本,当然是跨浏览器.

Mic*_*rdt 31

没有闪存,在大多数浏览器中根本不可能.用户的剪贴板是一种与安全相关的资源,因为它可能包含密码或信用卡号等内容.因此,浏览器正确地不允许Javascript访问它(有些允许它显示用户已经确认的警告,或者使用签名的Javascript代码,但没有一个是跨浏览器).

  • 所以也许页面不能从剪贴板中读取,但为什么不写入呢?= / (21认同)
  • 但是,为什么允许它通过隐藏的闪存发生,涉及零用户通知和反馈? (5认同)
  • 虽然这个答案在2011年是真的,但浏览器在杀死闪存的斗争中已经走了很长的路.请参阅下面的答案. (4认同)
  • @EricGrange:因为早在20世纪90年代中期,Netscape的某个人决定出于性能原因,浏览器插件将是原生二进制文件,因此可以做任何事情.当时网络世界是一个非常简单的地方,安全性并不是那么令人担忧. (3认同)

Jul*_*ito 25

我曾尝试过闪存解决方案而且我也不喜欢.太复杂太慢了.我所做的是创建一个textarea,将数据放入其中并使用浏览器"CTRL + C"行为.

jQuery javascript部分:

// catch the "ctrl" combination keydown
$.ctrl = function(key, callback, args) {
    $(document).keydown(function(e) {
        if(!args) args=[]; // IE barks when args is null
        if(e.keyCode == key && e.ctrlKey) {
            callback.apply(this, args);
            return false;
        }
    });
};

// put your data on the textarea and select all
var performCopy = function() {
    var textArea = $("#textArea1");
    textArea.text('PUT THE TEXT TO COPY HERE. CAN BE A FUNCTION.');
    textArea[0].focus();
    textArea[0].select();
};

// bind CTRL + C
$.ctrl('C'.charCodeAt(0), performCopy);
Run Code Online (Sandbox Code Playgroud)

HTML部分:
<textarea id="textArea1"></textarea>

现在,把你要复制的东西放在'PUT THE TEXT TO COPY HERE中.可以成为一种功能.区域.对我来说工作正常.你只需要制作一个CTRL + C组合.唯一的缺点是你将在你的网站上显示一个丑陋的textarea.如果使用style ="display:none",则复制解决方案将不起作用.

  • 这似乎只将Ctrl + C的功能绑定到javascript函数,而不是将数据放在OS剪贴板中. (6认同)
  • 试试'不透明度:0` (5认同)
  • @GabLeRoux仅在选择文本时启用safari中的复制功能.这确实有效,但最近对safari的更新已经停止了.似乎在调用按键事件后选择文本只是不再在该浏览器中删除它.然而,在Chrome中仍然可以正常工作 哦,好吧,可能不得不回到使用Flash浏览器.... (2认同)

mal*_*avi 15

clipboard.js刚刚发布,无需Flash即可复制到剪贴板

请在此处查看> http://zenorocha.github.io/clipboard.js/#example-action