您可以在此处阅读有关此信息的更多信息。
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检查对象是否是某个类别的对象。不要为自定义创建的类这样做,因为它可能由于沙箱而失败。