- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题与 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/
我是一名优秀的程序员,十分优秀!