您可以在此處閱讀有關此信息的更多信息。
Swift選擇搜索(SSS)是一個Firefox附加組件,可快速使用您喜歡的搜索引擎在頁面中快速搜索一些文本。
選擇頁面上的文本,帶有搜索引擎的小型彈出框將出現在您的光標上方。按ONE,您將使用該引擎自動搜索所選文本!
SSS是可配置的。您可以定義出現在彈出窗口上的搜索引擎,圖標的外觀,單擊它們時會發生什麼,彈出窗口出現的位置,是否在頁面滾動時將其隱藏,如果您想自動在選擇中自動複製文本以及更多選項。
您還將獲得一個可選的上下文菜單,用於使用任何引擎搜索。如果需要,可以在選項中禁用此額外菜單。您還可以選擇禁用彈出窗口本身,而僅保留此上下文菜單。您的選擇。 :)
SSS可在Mozilla附加組件網站上找到:
https://addons.mozilla.org/firefox/addon/swift-selection-search
首先,由於Webextensions是在JavaScript中進行的,因此我們需要能夠將打字稿轉換為JavaScript,最好以盡可能自動的方式轉換為JavaScript。
安裝NPM 。從https://nodejs.org下載node.js ,您將與它一起獲得NPM 。
在項目的文件夾中,在命令行中運行此操作:
NPM安裝
這將在文件夾node_modules中本地安裝項目的打字條依賴項。
將所有.TS腳本轉換為.js(在Windows上):
“ node_modules/.bin/tsc.cmd” - -Watch -P tsconfig.json
對.TS文件進行任何更改後,該命令將保持活力並自動重新轉移代碼,這在開發時很有用。
現在您有.js文件,因此您可以將SSS用作Webextension。耶!
為了簡短的開發或好奇心,嘗試SSS的簡單方法是:在Firefox中調試#插件頁面。按“加載臨時附加組件”按鈕,在Swift選擇搜索“ SRC”目錄中選擇一個文件(例如subtest.json ),它將加載附加組件,直到瀏覽器關閉。更改大多數代碼需要再次重新加載附加組件。
要進行更長時間的開發和/或包裝,例如每次更改後自動重新加載,請在此處按照Mozilla的說明進行安裝和使用Web-Ext工具。
在Github上叉上存儲庫,然後將其克隆到您的計算機上。
請按照上述說明進行構建。
最後,您應該有一個腳本,該腳本將自動將代碼從打字稿轉到JavaScript,並且應該知道如何在Firefox上運行您的SSS版本。
了解SSS有3個主要分支:
閱讀下面的代碼指南。
找到您想在問題列表中解決的問題。
詢問是否已經在研究它。此外,如果缺少有關如何實施的詳細信息,或者您想知道可能的方法,請隨時提出!
為您要實現的新功能或錯誤修復創建一個新的git分支。創建此分支從“開發”,以簡化以後的合併(因為“主”可能沒有當前的所有更改)。
實施並提交/將更改推向分支機構,可能是在多個提交中。
最後,創建一個拉動請求將您的更改合併到原始存儲庫中。如果需要,它將受到代碼審查,討論以及可能更改的約束。
謝謝!
從JavaScript到打字稿的某個時候,SSS已移植以獲得類型註釋的好處,因為類型檢查器可以捕獲許多錯誤。但是,應該注意的是,Webextensions與打字稿的相互作用充其量是挑剔的,因為Typescript假設腳本可以從其他腳本導入代碼/數據,而實際上Webextensions環境具有沙箱,並且很少允許。
內容腳本看不到背景腳本或反之亦然的代碼,而且唯一可以看到彼此的代碼的唯一方法是,是否所有這些代碼都通過後台腳本在同一頁面上註入了同一頁面,與如果將它們包含在html頁面中的腳本為腳本的方式類似。 Typescript不知道這就是Webextensions的工作方式,因此僅僅因為某些東西正確地轉移到JavaScript上,這並不意味著Webextension會起作用。
一個有效的示例是,我們可以在背景腳本中聲明類型/類並在其他腳本中引用它們,因為只有類型的檢查器關心它們。我們會進行類型檢查,這很好。
但是,如果我們嘗試將這些方法,可變分配等添加到這些類中,則內容腳本或選項頁面腳本不會看到這些。當轉到JavaScript時,它們將作為對另一個腳本中的代碼的引用,由於Webextensions SandBoxing,在運行時無法引用該代碼。除非我們將其聲明為const enum ,否則枚舉(具有具體值的枚舉)也是如此,因此,在這種情況下,Typescript將其值複製到使用的位置,而不是創建JavaScript對象。
因此,如果您在此項目中的多個腳本中看到一個類別或部分聲明的類(例如,在背景腳本和頁面腳本中),則是原因。
可能失敗的另一件事是使用instanceof檢查對像是否是某個類別的對象。不要為自定義創建的類這樣做,因為它可能由於沙箱而失敗。