如何在没有外部库的情况下从Javascript bookmarklet复制到剪贴板?

如何在没有外部库的情况下从Javascript bookmarklet复制到剪贴板?,javascript,bookmarklet,Javascript,Bookmarklet,这个问题与其他关于复制到剪贴板的问题不同,因为我想在bookmarklet中运行一个函数,然后将结果复制到剪贴板。而且,在没有外部库的情况下,在bookmarklet Javascript中实现这一点是否可行 下面的bookmarklet从当前页面创建一个HTML链接,然后打开一个新的浏览器选项卡,并将HTML链接放入可以用键盘复制的文本区域 但是,我如何跳过打开窗口和复制的步骤,而直接转到剪贴板呢?使用document.execCommand('copy')?其他方法?是否可以在没有外部库的情

这个问题与其他关于复制到剪贴板的问题不同,因为我想在bookmarklet中运行一个函数,然后将结果复制到剪贴板。而且,在没有外部库的情况下,在bookmarklet Javascript中实现这一点是否可行

下面的bookmarklet从当前页面创建一个HTML链接,然后打开一个新的浏览器选项卡,并将HTML链接放入可以用键盘复制的文本区域

但是,我如何跳过打开窗口和复制的步骤,而直接转到剪贴板呢?使用
document.execCommand('copy')
?其他方法?是否可以在没有外部库的情况下使用bookmarklet Javascript实现这一点

在新选项卡中创建页面链接的Bookmarklet:

javascript:function htmlEscape(s){s=s.replace(/&/g,'&');s=s.replace(/>/g,'>');
s=s.replace(/</g,'<');return s;} function linkEscape(s){s=s.replace(/&/g,'&');
s=s.replace(/"/,'"');return s} h = '<a href="' + linkEscape(location.href) + '" target="_blank">
<span class="tooltip" title="' + htmlEscape(document.title) + '">' + htmlEscape(document.title)
 + '</span></a>'; with(window.open().document){write(h+'<form name=f>
<textarea  name=a rows=5 cols=80 wrap=hard>'+htmlEscape(h)+'</textarea></form>'); 
close(); f.a.select(); } void 0
我可以看到打开新窗口的函数部分:

with(window.open().document){write(h+'<form name=f><textarea  name=a rows=5 
cols=80 wrap=hard>'+htmlEscape(h)+'</textarea></form>'); close(); f.a.select(); } void 0
with(window.open().document){write(h++'+htmlEscape(h)+';close();f.a.select();}void 0
如何将函数的内容(HTML链接)直接写入剪贴板?

问题没有指定是否允许使用外部库,所有现有答案都需要外部库

想要在没有外部库的情况下实现这一点的额外限制需要一种不同的方法。我在下面也提供了关于另一个问题的答案,但它也适用于这个场景,因为它不使用外部库

Github Gist中有一个很好的小书签集,可以复制到剪贴板。它不使用任何外部库,我认为这是一个优势

如前所述,它复制了一些静态文本,但在底部,它讨论了如何使其适应其他用途,例如复制页面标题

纯香草版在Chrome 61中运行得非常好,没有任何修改。但一定要阅读评论;有些人对如何让它在其他浏览器和场景中工作提出了建议

下面是我测试过的代码,已经缩小并准备转换为bookmarklet:

javascript:!function(a){var b=document.createElement("textarea"),c=document.getSelection();b.textContent=a,document.body.appendChild(b),c.removeAllRanges(),b.select(),document.execCommand("copy"),c.removeAllRanges(),document.body.removeChild(b)}("Text To Copy");
Gist也有预先缩小的代码。

问题没有指定是否允许使用外部库,所有现有答案都需要外部库

想要在没有外部库的情况下实现这一点的额外限制需要一种不同的方法。我在下面也提供了关于另一个问题的答案,但它也适用于这个场景,因为它不使用外部库

Github Gist中有一个很好的小书签集,可以复制到剪贴板。它不使用任何外部库,我认为这是一个优势

如前所述,它复制了一些静态文本,但在底部,它讨论了如何使其适应其他用途,例如复制页面标题

纯香草版在Chrome 61中运行得非常好,没有任何修改。但一定要阅读评论;有些人对如何让它在其他浏览器和场景中工作提出了建议

下面是我测试过的代码,已经缩小并准备转换为bookmarklet:

javascript:!function(a){var b=document.createElement("textarea"),c=document.getSelection();b.textContent=a,document.body.appendChild(b),c.removeAllRanges(),b.select(),document.execCommand("copy"),c.removeAllRanges(),document.body.removeChild(b)}("Text To Copy");

Gist也有预先缩小的代码。

可能重复投票结束,因为这是一个重复的。在发布问题之前,请使用此网站上的搜索功能。使用clipboard.js清楚地复制评论:“是否可以在没有外部库的情况下使用bookmarklet Javascript进行此操作?”投票可能重复,因为这是一个重复的。在发布问题之前,请使用本网站上的搜索工具。使用clipboard.js清楚地复制注释:“是否可以在没有外部库的情况下使用bookmarklet Javascript进行此操作?”