關於 Firefox 複製網址列連結貼上文本編輯器沒有網頁 Title 的解決方法

分享
關於 Firefox 複製網址列連結貼上文本編輯器沒有網頁 Title 的解決方法
Photo by Rubaitul Azad / Unsplash

最近從 Edge 換回 Firefox,用沒幾天就被一個小地方卡住。

在 Edge 上,網址列複製網址、到 AFFiNE 筆記裡貼上,出來的是一條帶網頁標題的超連結,標題直接寫在筆記裡,之後回頭看一眼就知道那是什麼。Firefox 沒有這個行為,貼上去就是一長串網址:

筆記一多,這些網址就是一坨要一條條點開才知道是什麼的東西,關鍵字也搜不到。

先去看官方有沒有打算做。Mozilla Connect 上有這則提案:When copy / pasting URL include Meta Title of the ... - Mozilla Connect,截至寫這篇為止沒看到後續進度。

那就找插件。試了兩個:

URL2Clipboard 功能最接近我要的,而且它有個細節做得很好:Ctrl + V 貼出來是帶超連結的標題,Ctrl + Shift + V(貼上為純文字)則只有標題文字,不會把網址一起吐出來。兩種貼上各給各的東西,互不干擾。可惜每次複製都要多按幾下選格式,日常用起來不夠流暢。

Copy Tab Title and Url 操作是簡單了,但它只丟純文字出來,貼到 AFFiNE 還是沒有超連結效果,等於沒解決我原本的問題。

兩個都差一點,只好自己想辦法。

翻到 reddit 這兩篇討論:

Any way to use the copy\&paste URL/title feature of Edge in FF? (pasting the title of the site) : r/firefox

Bookmarklet does not work : r/firefox

裡面提到 Firefox 的書籤網址可以填 javascript: 開頭的程式碼,點下去就在當前頁面執行(也就是 bookmarklet)。那方向就清楚了:不用等 Firefox 改,把「複製成超連結」這件事寫成一段 JavaScript 塞進書籤就好。

Ctrl + Shift + O 打開書籤管理,新增書籤,名字隨便取,在網址欄位貼上這段:

javascript:(function(){const t=document.title,u=window.location.href,html=`<a href="${u}">${t}</a>`,e=function(e){e.clipboardData.setData("text/html",html),e.clipboardData.setData("text/plain",u),e.preventDefault()};document.addEventListener("copy",e),document.execCommand("copy"),document.removeEventListener("copy",e);})();

做的事情是攔截一次 copy 事件,往剪貼簿的兩個格子各寫各的:text/html 放 標籤,text/plain 放乾淨的網址。剪貼簿本來就能同時放多種格式,貼上時由接收端決定讀哪一格 —— AFFiNE、Notion 這類支援 rich paste 的編輯器讀 text/html,純文字貼上讀 text/plain。等於用手寫的方式湊出 URL2Clipboard 那個行為。

這裡用的 document.execCommand("copy") 其實已經被 MDN 標為 Deprecated 且 Non-standard,文件也直說「To access the clipboard, the newer Clipboard API is recommended over execCommand()」。
沿用它純粹是因為 reddit 那兩篇的寫法就是這樣,而且它是同步的、配上 copy 事件可以一次寫進兩種格式,改起來最省事。要寫得更合乎現況的話該換成 Clipboard API 的 write()ClipboardItem,一樣能同時放 text/htmltext/plain,只是變成非同步、程式碼會長一點。

存好之後,在想複製的頁面點一下書籤列的那顆按鈕,剪貼簿就同時有兩份了。Ctrl + Shift + V 貼到純文字編輯器,拿到的是乾淨的網址:

https://www.ruanyifeng.com/blog/2026/06/weekly-issue-400.html

Ctrl + V 貼到 AFFiNE,則是直接變成帶標題的超連結:

如果不想動滑鼠,書籤還可以設關鍵字。在書籤的「關鍵字」欄位填一個好按的短字(例如用 cc),之後 Ctrl + L 跳到網址列、輸入 cc、Enter,一樣會執行那段程式碼。

現在複製連結變成 Ctrl + Lcc → Enter,比原本在 Edge 上還順一點,算是意外收穫。

Read more

Windows Sandbox 沙箱閃退顯示連線已中斷解決方法

Windows Sandbox 沙箱閃退顯示連線已中斷解決方法

想拿 Windows Sandbox 測試東西,隔離環境用完就丟最省事。結果一打開沙箱就直接跳「與 Windows 沙盒環境的連線已中斷。是否要重新連線?」,訊息一出來就閃退,連畫面都還沒進去。 翻到 Eleven Forum 這串,有大神直接講解怎麼解決:把 vGPU 共用關掉。 Just had this issue after using Sandbox for years. My fix, as found in an Arabic YouTube video, is to use gpedit.msc and change the Computer Configuration -> Administrative

By GXiang
UV python 操作筆記

UV python 操作筆記

前陣子看到了 uv 這個 python 套件、專案管理器,使用了之後發現簡直快、輕便又好上手,下方是我常使用的指令集 (持續更新中): 查看 python 版本清單 uv python list 💡已安裝的旁邊會顯示 python 安裝目錄位址 安裝 python 版本 # latest uv python install # specific version uv python install <version number> 初始化 uv 專案資料夾。 uv init <project name> 💡新專案預設會自動產生 git repository、.python-version、pyproject.

By GXiang
ts-rest 的 API 測試手法(1)

ts-rest 的 API 測試手法(1)

今天與朋友討論到 ts-rest 撰寫 API test 的時候可以用 Zod 的 safeParse().success 判斷 API Response 的 schema 正不正確。 Sample Code: const { body, status } = client.users.create({ body: createUserPayload(), }) expect( userContract.create.responses[201].safeParse(body) .success, ).toBe(true) 這樣做確實會減少許多傳統需要手動添加 expect.any(Type)...等等的型別驗證,如果只是單純驗證型別,確實透過 ts-rest 合約搭配的 Zod 的 safeParse

By GXiang
把 MixerBox 歌單匯入到 Spotify

把 MixerBox 歌單匯入到 Spotify

本文由 個人medium文章 同步 筆者最近從 MixerBox 跳槽到 Spotify,但因為 Spotify 推薦的歌單不符合我的口味,又想把 MixerBox 歌單直接無痛移轉到 Spotify,網路上爬文許久,雖然有看到 Jerry 大大分享的這篇文章,但似乎已經沒辦法使用,既然沒有現成的解決方案,那我們就只好動動自己的小腦袋了🧠 貼心體醒:接下來的內容並不會要求撰寫/查看任何程式🙂 使用工具:瀏覽器, Visual Studio Code 筆者在目前看到的平台歌單轉移工具 TuneMyMusic 中,我發現了一個可能性,在第一步選擇歌曲來源時,有一個選項叫做「任意文本」。 點了之後才發現,原來可以利用歌名加上換行分隔作為清單進行匯入!那事情就簡單多了,我們只要能拿到自己播放清單中的歌曲文字列表就可以直接匯入。 接下來我們來到 MixerBox Web 版頁面,點擊「我的音樂庫」,可以看到自己的歌單。 點擊你想要的歌單後,所有歌曲都會呈現在頁面上。 那麼接下來的問題是:

By GXiang