gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:16:29 25 4
gpt4 key购买 nike

这个问题与 SO 中有关复制到剪贴板的其他问题不同,因为我想在书签中运行一个函数,然后将该结果复制到剪贴板。 并且,这是否可以在没有外部库的情况下在 JavaScript 书签中完成?

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

但是我如何跳过打开窗口和复制的步骤,而是直接转到剪贴板?通过使用document.execCommand('copy')?其他方法?是否可以在没有外部库的情况下使用书签 Javascript 来完成此操作?

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

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

我可以看到生成 HTML 的部分,它出现在名为 h 的变量中:

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 =

我可以看到打开新窗口的函数部分:

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

如何将函数内容(HTML 链接)直接写入剪贴板?

最佳答案

问题Copy text to clipboard from bookmarklet没有指定是否允许外部库,所有现有答案都需要外部库。

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

Github Gist 中有一个不错的小书市,可以 the core of what you want -- 复制到剪贴板。它不使用任何外部库,我认为这是一个优点。

正如所写,它复制了一些静态文本,但在底部它讨论了将其适应其他用途,例如复制页面标题。

普通版本在 Chrome 61 中对我来说运行得非常好,无需任何修改。但请务必阅读评论;有些人提出了让它在其他浏览器和场景中工作的建议。

这是我测试过的代码,已经缩小并准备好变成书签:

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 也有预先缩小的代码。

关于javascript - 如何在没有外部库的情况下从 Javascript 书签复制到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40943812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com