需求

之前寫 Tampermonkey 的腳本,有些部分,一直沒時間優化,分別為:

  • 自動複製檔名到 clipboard
  • 下載檔案時自動命名
  • 跨 script 取用變數

現在有空檔,來研究一下。

自動複製檔名到 clipboard

忘記之前踩到什麼問題,這次直接用 Clipboard API 就達到效果了。 writeText 可以直接帶 string 。

    navigator.clipboard.writeText(GM_getValue('xxxx'))
        .then(() => {
        console.log("Copied to clipboard successfully!");
    })
    // 略

參考文件

下載檔案時自動命名

如果是針對 a 元素,可以直接增加 download attribute,使他調整下載的檔名, 但是如果 server 有特別回 content-disposition header 會以 server 為準,所以就不會有作用。

還有一個作法是利用 axios get 檔案後,重新塞到新連結後,再來下載就不會前面提到的問題, 不過因為我要操作的檔案不小,不適合這種作法。

所以現階段現自動設定到 clipboard ,手動貼上改檔名。

參考文件

跨 script 取用變數

用法很簡單,在 Tampermonkey 腳本增加下列兩行

// @grant        GM_setValue
// @grant        GM_getValue

原來是拆成兩個 script,後來上網找,其實直接在程式中增加 if 判斷當前 host 就可以合併了, 這樣就可以透過 GM_getValueGM_setValue 來操作暫時的儲存的值。 也可以用 GM.getValue GM.setValue,不過這兩個回傳 Promise ,對我的情境有點麻煩,就先使用舊的方式。

參考文件