使用瀏覽器開發(fā)者工具復(fù)制網(wǎng)頁(yè)標(biāo)題到剪貼板
JavaScript我一小時(shí)速成(低情商:面向百度編程)的,更好的寫法應(yīng)該一定會(huì)有,這里提供思路僅供參考。
因?yàn)槲乙恢庇龅竭@種情況:網(wǎng)頁(yè)上下載下來的文檔使用類別編號(hào)命名,很不直觀;但由于PDF格式的限制,直接復(fù)制PDF文件中的文檔時(shí)遇到換行等常見情況時(shí)就沒辦法直接粘貼成文件名。因此從網(wǎng)頁(yè)標(biāo)題獲取文件標(biāo)題作為文件名是一個(gè)非常好的選擇。

之前我一直在用一個(gè)叫TabCopy的插件,但是TabCopy的Option+C快捷鍵已經(jīng)被我用來復(fù)制標(biāo)題和URL了,TabCopy又不支持分配更多的快捷鍵實(shí)現(xiàn)不同的功能,只能自己折騰了。
基于主流瀏覽器提供的開發(fā)者工具(大部分通過F12呼出),我們可以通過JavaScript與網(wǎng)頁(yè)進(jìn)行互動(dòng)。獲取網(wǎng)頁(yè)標(biāo)題的方式也很簡(jiǎn)單,直接document.title就完事了。但是麻煩的地方在于怎么將標(biāo)題寫入剪貼板。
通過快速的學(xué)習(xí)(百度),得知目前有兩種與剪貼板交互的方式:document.execCommand()與Clipboard API。其中document.execCommand()已經(jīng)被標(biāo)為obsolete(過時(shí)),隨時(shí)可能會(huì)被棄用,因此我一開始是打算用navigator.clipboard.writetext()來寫入剪貼板的。
但是我花了寶貴的20分鐘做了各種嘗試,發(fā)現(xiàn)不管怎么操作(甚至直接寫死字符串)都會(huì)返回Document not focused錯(cuò)誤,我直接爬了。

還是回到隨時(shí)會(huì)被砍掉的execCommand()方法吧,希望谷歌給我點(diǎn)面子,不要不識(shí)抬舉.jpg
execCommand('Copy')本質(zhì)上是向?yàn)g覽器發(fā)送Copy指令,復(fù)制的內(nèi)容完全取決于當(dāng)前選中的內(nèi)容。但是document.title只是一個(gè)屬性,因此需要曲線救國(guó),在當(dāng)前的頁(yè)面上新建一個(gè)元素并將需要復(fù)制的內(nèi)容寫入元素中,最后全選元素內(nèi)的文本并發(fā)出Copy指令并銷毀該元素。
整段代碼如下。有沒有大佬知道navigator.clipboard.writeText要怎么用啊嚶嚶嚶
使用方法是:F12調(diào)出開發(fā)者工具,粘貼這段代碼到下方的命令行區(qū)域并回車運(yùn)行,標(biāo)題就會(huì)被復(fù)制到剪貼板里以供粘貼。
因?yàn)樗胁僮鞫伎梢允褂每旖萱I完成,因此我用BetterTouchTool把這段操作綁定了Option+F12快捷鍵。

這樣我需要復(fù)制網(wǎng)頁(yè)標(biāo)題的時(shí)候,只要按下Option+F12,BTT就會(huì)自動(dòng)幫我執(zhí)行打開開發(fā)者工具→運(yùn)行JS→關(guān)閉開發(fā)者工具窗口的流程。