沒穿方服

索引

顯示╱隱藏內文
顯示具有 web-extension 標籤的文章。 顯示所有文章
顯示具有 web-extension 標籤的文章。 顯示所有文章

這個新功能是什麼

就是古老 IE 每點一個連結,轉到新頁面時會「嗒」一聲的音效。

Noise 轉為 web extension 後就一直沒做這功能,因為時機太難判斷,之前用 webRequest + webNavigation + History API 怎麼配都弄不好,尤其在一些 SPA 或嵌入很多廣告的網頁,會發瘋叫個不停。

直到 Firefox 147 支援 Navigation API,雖然使用情境仍複雜,但有比較清楚的介面定義,至少能安心實作。

「Navigate」的中文翻譯

另一個難題是 navigate 中文要翻成什麼。

一般翻成「瀏覽」、「導覽」,或「導航」,但缺乏上下文時都太曖昧。

參考 Windows 翻譯(檔案總管用的,IE 概念上就是 explorer 的延伸,所以音效也一樣)是用「開始瀏覽」和「導覽開始」,其實也看不懂。

Win 10 系統音效中的「開始瀏覽」

Firefox DevTools 的翻譯是「導航」:

Firefox 147 DevTools「主控台」面板訊息

我最後使用「瀏覽導航」,作為事件選項之一感覺還可以。

Navigate 具體發生時機

應用樣態多元,所以使用者其實不太能預期發生時機。

不如現在就安裝 Noise,搭配不同 navigationType 設定不同音效,在日常生活中慢慢認識它。

Noise 4.3 選項畫面「瀏覽導航」例子

示例(影片有聲音)

Noise 4.2.0 新功能「Multiple Sounds」

可以在事件上綁定「多個」聲音,可選擇是否隨機播放。

安裝 Noise:

註:套件裡面「沒有提供」影片中的聲音檔,要自己去生喔。

看似簡單的 CopyTabTitleUrl (web extension), 其實有選項「Use Extended Edit Mode 🧪」可以打開實驗性功能,但數量也太膨大了吧🧪🧪🧪,看它 wiki 上的 format 說明,到底是怎麼發展成這個小天地的?

選單成果

我沒有全部看懂,但湊出一個 format 能夠將 URL 中的 fbclidutm_source 等追蹤碼去掉:
${linkSrcUrl.replaceAll('[?&](fbclid|utm_\w+)=[^&#]+','')}


設定介面也很難懂,瘋狂科學家風格

選項畫面

很基本的功能,按下鍵盤 PageDown 的時候應該要捲動網頁吧? 為什麼沒捲呢?

因為 focus(焦點)不在你要捲動的東西上啊。 於是寫了一個套件 FocuScroll,可以設定快速鍵,按下去會修正焦點,讓捲動鍵發揮作用就是了。

主要精神是聚焦在可以捲動的主要內容上,我自己很常用,覺得對鍵盤瀏覽來說很重要。



舉例,有此現象的網頁:

  1. Javadoc - Overview (Java SE 10 & JDK 10 ) Javadoc,預期 PageDown 會捲動右邊的大框框,但實際不會

    現在版本是 Java 10,一進去就會自動跳到「搜尋框」所以 PageDown 不會捲動; Java 8 之前的版本則是因為焦點一開始在 <frameset> 最外層,而不是最大那一塊 <frame> 內容,所以也不會動。

  2. 內嵌 codepen 或 youtube 等等使用 <iframe> 的網頁,點了裡面按鈕,焦點就被吃進去,再按 PageDown 就不會捲動外面那層了。
    例如這邊放個跟捲軸有關的 youtube 影片,點播放以後 就不能捲動這篇文章了。

原理和免責

如何找到真正要捲動的內容區塊? 其實我還沒想到很好的方法,現在是從畫面中央的元素開始,透過一些硬做的規則搜尋,細節會改來改去,但原則是要通過一些已知形式,都寫在原始碼的測試中。 可以想見一定有支援不了的網頁,那就再加測試、再修正吧。


Firefox 設定快速鍵的方法

藏在擴充套件管理的小齒輪圖示,裡面的「管理鍵盤快速鍵」功能。

Firefox「管理鍵盤快速鍵」功能

為什麼沒有人注意這個問題

鍵盤瀏覽比較會碰到這個問題,如果是用滑鼠滾輪,或筆電的觸控板滾動就不會遇到。

文件網站如 MDNMicrosoft Learn 有提供中文翻譯,有時候確實有幫助,像我就是看中文比較快。

但不是每個網頁都翻譯品質良好,差的時候,或者不確定差不差的時候就很尷尬,要切回原文確認,反而浪費時間。

有些領域則是已經習慣原文,但 google 搜到翻譯版連結,點進去反而陌生。

功能不親切的網站也是問題,例如 zh-hant.reactjs.org,要改語言就會離開目前主題(會跳去首頁)。

於是寫了一個瀏覽器套件 Delocalizer,它是 localize 的相反。

圖示是長得像丸子串的東西

提供一個工具列按鈕,「轉換目前頁面」會抓 URL 裡的 locale 部份(zh.xxx.comxxx.com/zh/yyy),把它拿掉,再把 accept-language 請求標頭改成 en,讓網站吐英文。

Firefox 版工具列按鈕

也可以設定 xx 網站自動轉換,或者從 google 點連結才自動轉換。 以下是選項畫面:

選項畫面

隨意感想: