使用浏览器开发者工具复制网页标题到剪贴板
JavaScript我一小时速成(低情商:面向百度编程)的,更好的写法应该一定会有,这里提供思路仅供参考。
因为我一直遇到这种情况:网页上下载下来的文档使用类别编号命名,很不直观;但由于PDF格式的限制,直接复制PDF文件中的文档时遇到换行等常见情况时就没办法直接粘贴成文件名。因此从网页标题获取文件标题作为文件名是一个非常好的选择。

之前我一直在用一个叫TabCopy的插件,但是TabCopy的Option+C快捷键已经被我用来复制标题和URL了,TabCopy又不支持分配更多的快捷键实现不同的功能,只能自己折腾了。
基于主流浏览器提供的开发者工具(大部分通过F12呼出),我们可以通过JavaScript与网页进行互动。获取网页标题的方式也很简单,直接document.title就完事了。但是麻烦的地方在于怎么将标题写入剪贴板。
通过快速的学习(百度),得知目前有两种与剪贴板交互的方式:document.execCommand()与Clipboard API。其中document.execCommand()已经被标为obsolete(过时),随时可能会被弃用,因此我一开始是打算用navigator.clipboard.writetext()来写入剪贴板的。
但是我花了宝贵的20分钟做了各种尝试,发现不管怎么操作(甚至直接写死字符串)都会返回Document not focused错误,我直接爬了。

还是回到随时会被砍掉的execCommand()方法吧,希望谷歌给我点面子,不要不识抬举.jpg
execCommand('Copy')本质上是向浏览器发送Copy指令,复制的内容完全取决于当前选中的内容。但是document.title只是一个属性,因此需要曲线救国,在当前的页面上新建一个元素并将需要复制的内容写入元素中,最后全选元素内的文本并发出Copy指令并销毁该元素。
整段代码如下。有没有大佬知道navigator.clipboard.writeText要怎么用啊嘤嘤嘤
使用方法是:F12调出开发者工具,粘贴这段代码到下方的命令行区域并回车运行,标题就会被复制到剪贴板里以供粘贴。
因为所有操作都可以使用快捷键完成,因此我用BetterTouchTool把这段操作绑定了Option+F12快捷键。

这样我需要复制网页标题的时候,只要按下Option+F12,BTT就会自动帮我执行打开开发者工具→运行JS→关闭开发者工具窗口的流程。