## SingleFile

#### 将整个页面保存到单个HTML文件中

开始使用-附加说明-选项说明-注释编辑器-技术说明-模板变量-模板函数-与其他扩展集成-已知问题-排除未知问题-贡献者

1. 开始使用
   - 等待页面完全加载。
   - 单击SingleFile按钮在扩展工具栏中处理和保存页面。
   - 处理页面时，您可以再次单击按钮取消操作。
2. 附加说明
   - 要保存多个选项卡，请先选择它们，然后单击SingleFile按钮.
   - 右键单击SingleFile按钮打开上下文菜单在扩展工具栏或网页上。它允许您保存：
     - 当前标签，
     - 或所选内容，
     - 或所选帧。
   - 您还可以一键处理多个选项卡并保存：
     - 所选选项卡，
     - 或未缝合的标签，
     - 或所有选项卡。
   - 上下文菜单还允许您激活以下内容的自动保存：
     - 当前标签，
     - 或未缝合的标签，
     - 或所有选项卡。
   - 在使用保存页面之前，您可以突出显示文本、添加注释、格式化和删除内容注释编辑器通过在上下文菜单中选择“注释并保存页面…”
   - 当自动保存功能处于活动状态时，页面每次加载后（如果没有，则在卸载前）都会自动保存。
   - 从上下文菜单中选择“保存选择”，而不首先选择任何内容，以显示一个选择器，该选择器将通过用鼠标悬停在内容上来帮助您选择内容。
   - 右键单击SingleFile按钮，选择“选项”打开选项页面。
   - 启用“目的地>上传到Google Drive”选项，将页面上传到Google云端硬盘
   - 您可以使用可自定义的快捷键Ctrl+Shift+Y保存当前选项卡或所选选项卡。转到about:addons，在齿轮菜单中选择“管理扩展快捷方式”，在Firefox中更改它。首选chrome://extensions/shortcuts在Chrome中更改它。。
   - 默认保存文件夹是在浏览器中配置的下载文件夹，参见Firefox中的about:preferences，chrome://settings在Chrome浏览器中，在Safari浏览器中选择“设置”>“常规”>“文件下载位置”。
3. 选项说明

   您可以通过选项页面自定义SingleFile。右键单击SingleFile按钮在浏览器工具栏中，选择上下文菜单中的“选项”/“管理扩展”以打开选项页面。

   个人资料

   - 配置文件是一组与唯一名称关联的用户定义选项。

     选项页面右上角的下拉列表允许您选择配置文件并修改相关选项。下拉列表旁边的按钮分别允许您创建、删除和重命名配置文件。

   - 您可以通过SingleFile的上下文菜单选择默认配置文件。该选择是持久的，并应用于所有选项卡。

   - 您还可以通过将配置文件与完整或部分URL相关联来覆盖默认配置文件。请参阅自动设置规则功能以获取更多信息。

   用户界面

   - 选项：在网页的上下文菜单中添加条目

     选中此选项可在网页的上下文菜单中显示SingleFile的条目。SingleFile按钮的上下文菜单无论是否选中此选项，都会显示扩展工具栏中的。

     建议检查此选项

   - 选项：在处理过程中在页面上叠加阴影

     选中此选项可在SingleFile检索页面资源时在页面上覆盖阴影。这提醒您不要关闭选项卡。

     建议检查此选项

   - 选项：在新选项卡中打开已保存的页面

     选中此选项可在新选项卡中显示保存的页面。例如，此选项可用于检查页面是否已正确保存。

   - 选项：保存页面后自动关闭选项卡

     选中此选项可在保存内部显示的页面后自动关闭选项卡。

   - 选项：键盘快捷命令

     使用此选项可以选择哪个自定义键盘快捷命令（在浏览器扩展的快捷键页面中定义）将触发当前配置文件。当在此处分配了快捷键后，使用该快捷键将按照此配置文件的设置保存页面。

   文件名

   - 选项：模板

     该模板允许您自定义已保存页面的文件名。您可以使用任何有效字符和“/”创建子文件夹（启用“在后台保存页面”选项）。您还可以使用以下任何变量这个列表功能来自这个列表模板中的任何位置。

     无效字符会自动转换并折叠为下划线。文件名不能超过192个字符，如果更长，则会被截断。无效字符包括：`[``~``+``\``?``%``*``:``|``"``<``>`以及ASCII表中0到31的控制字符。当您想自定义信息栏时，可以在特殊字符前添加前缀`%`,`<`,`>`,`{`,`}`和`|`具有`\`（例如。`\>`)将它们保存在信息栏内容中。

     模板示例：

     - `{page-title} ({date-iso} {time-locale}).html`将为标题为“SingleFile简介”的页面生成类似“SingleFile介绍（2018-09-15 11_06_03 PM）.html”的文件名。
     - `存档/{url-last-segment} - {date-iso}`将为托管在上的页面生成类似“welcome-2018-09-15”的文件名https://example.com/welcome.html.保存的文件将保存在子目录“archives”中。
     - `archives/{year-locale}/{month-locale}/{day-locale}/{page-title}.html`将生成文件名，如“Introduction to SingleFile.html”，存储在“archives”文件夹中的3个子目录中，每个子目录对应保存日期的每个部分（例如“2018/9/15/Introduction to SingleFile.htm”）。
   - 选项：最大长度

     输入文件名的最大长度（不带扩展名）及其单位（字节或字符）。

   - 选项：替换字符

     输入用于替换文件名中无效字符的字符。

   - 选项：用文本替换表情符号

     选中此选项可将文件名中的表情符号替换为其unicode文本表示形式。

   - 选项：将文件名模板数据保存到页面中

     选中此选项可将模板文件数据保存到页面。这允许您恢复保存页面时以前使用的模板数据，例如，确保再次保存页面时文件与原始文件保存在同一目录中。

   - 选项：打开“另存为”对话框以确认文件名

     选中此选项可显示“另存为”对话框，以便在保存页面之前确认文件名。如果未选中“在后台保存页面”选项，则将显示一个提示对话框，而不是“另存为”对话框。

   - 选项：文件名冲突解决

     当保存的页面的文件名与文件系统上的现有文件名冲突时，选择最合适的操作。“跳过重复文件”操作仅检测当前浏览会话期间下载的文件中的重复项。

   文件格式

   - 选项：格式

     选择保存文件的输出格式：

     - `“HTML”`：HTML文件（默认格式）。此格式生成不依赖于JavaScript打开的HTML文件。
     - `“自解压ZIP（通用）”`：可以在任何平台上打开的自解压ZIP文件。此格式生成的文件小于“HTML”格式，但需要启用JavaScript才能打开文件。
     - `“自解压ZIP”`：自解压ZIP文件，可以在任何平台上从HTTP打开，但在某些浏览器（例如基于Chromium或WebKit的浏览器）中不能从文件系统打开，而无需安装SingleFile。这种格式产生的文件比“自解压ZIP（通用）”格式小（约1%）。
     - `“ZIP”`：ZIP文件。此格式生成的ZIP文件无法在浏览器中打开，但可以在注释编辑器中打开。
   - 选项：密码

     键入密码，使用AES-256（与Winzip兼容）加密ZIP文件。小心，如果你丢失了密码，就无法打开文件。启用此选项会增加CPU消耗和保存或读取页面所需的时间。

   - 选项：嵌入图像

     选中其中一个选项，在将页面另存为ZIP文件时嵌入图像（自解压或非自解压）。这允许您在文件扩展名更改为“.PNG”时将保存的页面显示为PNG图像。

   - 选项：创建根目录

     选中此选项可在ZIP文件中创建根目录。目录名由时间戳和显示已保存页面的选项卡的标识符组成。

   - 选项：不在ZIP数据后附加数据

     选中此选项可删除ZIP数据后附加的数据。使用一些不支持带附加数据的ZIP文件的存档管理器，可能更容易打开生成的文件。启用此选项会增加保存页面所需的时间。

   - 选项：使文本可搜索

     选中此选项可将保存页面的文本内容插入自解压ZIP文件。例如，这使得从文本中搜索页面成为可能。请注意，如果所选格式为“自解压ZIP（通用）”，则文本内容以UTF-8编码，但页面以ISO-8859-1声明。

   HTML内容

   - 选项：压缩HTML内容

     选中此选项可删除所有HTML注释和不需要的标记、空格、引号和空白字符。选中此选项有助于在不更改文档的情况下减小文件大小。

     建议检查此选项

   - 选项：删除隐藏元素

     选中此选项可删除所有隐藏元素。选中此选项有助于在不更改文档的情况下减小文件大小。它还可能增加CPU消耗和保存页面所需的时间。

     建议检查此选项

   - 选项：设置内容安全策略

     选中此选项可添加具有策略的元标记，以阻止加载任何外部资源。

     建议检查此选项

   - 选项：删除框架

     选中此选项可删除所有框架和iframe元素。选中此选项可以大大减小文件的大小，而不会在大多数情况下更改文档。它还可以减少保存页面所需的时间。

   - ：保存嵌入资源的原始URL

     选中此选项可保存嵌入到已保存页面中的资源的URL。URL存储在属性中，其名称前缀为“data-sf-original-”，后缀为HTML内容的原始属性名称（例如“data-sf original src”、“data-sf-original href”）。对于CSS内容，URL存储为以“原始URL:”开头的注释。

   - 选项：不包括保存的日期

     选中此选项可删除已保存页面中包含并显示在信息栏中的已保存日期。

   - 选项：保存原始页面

     选中此选项可保存浏览器收到的原始HTML文件。选中此选项后，页面将保存为禁用JavaScript。选中此选项可能会更改文档。

     建议取消选中此选项

   信息栏

   - 选项：查看保存的页面时显示信息栏

     选中此选项以显示ℹ 查看保存的页面时，请单击页面右上角的按钮。单击此按钮，您可以获取有关保存日期的更多信息并打开原始URL。

     建议检查此选项

   - 选项：信息栏内容模板

     该模板允许您自定义信息栏中显示的内容。您可以使用任何有效字符，`n`对于新线路或`\t`对于选项卡。您还可以使用以下任何变量这个列表模板中的任何位置。如果模板或生成的内容为空，则信息栏将默认显示保存的日期。

     模板示例：

     - `{url href}（{date iso}）`将产生类似“https://www.example.com（2018-09-15 11 06 03下午）”。
     - `Title: {page-title}`将为以“示例域”为标题的页面生成“标题：示例域”等内容。
   - 选项：打开提示对话框以编辑信息栏内容

     选中此选项可显示提示对话框，以便在保存页面之前确认信息栏内容。

   - 选项：在保存的页面中包含信息栏

     选中此选项以显示ℹ 在未安装SingleFile的浏览器中查看保存的页面时，请单击页面右上角的按钮。

   - 选项：保持信息栏打开

     选中此选项可在查看已保存的页面时保持信息栏打开。

   样式表

   - 选项：删除未使用的样式

     选中此选项可删除与保存页面中任何元素都不匹配的所有CSS规则和样式。选中此选项不会更改文档，并且可以大大减小文件的大小。它还将增加CPU消耗和保存页面所需的时间。

     建议检查此选项

   - 选项：删除屏幕替代设备的样式表

     选中此选项可删除不用于屏幕显示的样式表，如打印预览和语音合成器的样式表。选中此选项可以帮助减小文件的大小。

   - 选项：压缩CSS内容

     选中此选项可缩小CSS样式表。选中此选项可以在不更改文档的情况下减小文件的大小。它还可能增加CPU消耗和保存页面所需的时间。

     建议取消选中此选项

   - 选项：将重复的样式表分组在一起

     选中此选项可将所有重复的内联样式表组合在一起。选中此选项不应更改文档，并且可以大大减小文件的大小。对于基于ZIP文件的存档格式，此选项将被忽略。请注意，此选项需要启用JavaScript才能正常运行。

     建议取消选中此选项

   - 选项：在head元素中移动其外部的样式

     选中此选项可将head元素外的所有样式元素移动到head元素中。这有助于在显示保存的页面时避免出现FOUC（“未样式化内容的闪烁”）。

     建议取消选中此选项

   图像

   - 选项：将重复图像分组在一起

     选中此选项可避免保存多次重复的图像。选中此选项不应更改现代浏览器中的文档，并且可以大大减小文件的大小。对于基于ZIP文件的存档格式，此选项将被忽略。

     建议检查此选项

   - 选项：保存延迟的图像

     选中此选项可保存所有尚未显示的延迟图像（或帧）。这可能有助于在不滚动页面的情况下保存所有图像。此功能已尽最大努力，并不能保证在所有网站上都能正常工作。这也会增加保存页面所需的时间。

     建议检查此选项

   - 选项：最大空闲时间（ms）

     输入等待延迟图像的最大延迟时间。例如，如果网络或系统条件恶化，您可以增加此值。否则，您也可以减小此值。

   - 选项：发送“滚动”事件

     选中此选项以分派“滚动”事件当等待延迟图像时。这可以改善某些网站上的图像加载，但也可能导致其他一些网站出现意外的滚动问题。

     建议取消选中此选项

   - 选项：缩小页面

     选中此选项可通过缩小页面来保存页面的全部内容。例如，这可以帮助使用无限虚拟列表保存页面。

     建议取消选中此选项

   - 选项：加载延迟帧

     选中此选项可在保存帧内容之前加载延迟帧和图像。这将增加保存页面所需的时间。

     建议取消选中此选项

   - 选项：删除图像以获得其他屏幕分辨率

     选中此选项可删除默认显示分辨率较低和/或较高的替代图像。选中此选项可以大大减小文件的大小。

   字体

   - 选项：删除未使用的字体

     选中此选项可删除与任何内容都不匹配的所有字体CSS规则。选中此选项不应更改文档，并且可以大大减小文件的大小。

     建议检查此选项

   - 选项：删除替代字体

     选中此选项可删除所用字体的替代字体。选中此选项不应更改文档，并且可以大大减小文件的大小。

     建议检查此选项

   目的地

   - 选项：保存到文件系统

     选中此选项可将下载的页面保存在计算机的文件系统上。

     建议检查此选项

   - 选项：共享页面

     选中此选项可与其他应用程序共享页面。此选项仅在支持以下功能的浏览器中可用Web共享API.

     建议取消选中此选项

   - 选项：复制到剪贴板

     选中此选项可将页面复制到剪贴板。此选项不适用于基于ZIP文件的存档格式。

     建议取消选中此选项

   - 选项：上传到GitHub

     选中此选项可将页面保存在GitHub上。请参阅文档页面学习如何配置SingleFile以在GitHub上保存页面。警告：一旦页面保存在GitHub上，删除它很复杂，请参阅文档页面在GitHub上获取更多信息。

     建议取消选中此选项

   - 选项：访问令牌

     在GitHub上输入您的个人访问令牌，请参阅文档页面在GitHub上获取更多信息。

   - 选项：用户名

     在GitHub上输入您的用户名。

   - 选项：存储库名称

     在GitHub上输入将存档已保存页面的存储库的名称，请参阅文档页面有关如何创建存储库的更多信息，请访问GitHub。

   - 选项：分支名称

     输入将存档页面的存储库分支名称。分支机构必须存在于GitHub上，请参阅文档页面关于如何在GitHub.io上发布该分支的更多信息，请访问GitHub。

   - 选项：上传到WebDAV服务器

     选中此选项可将页面保存在WebDAV服务器上。

     建议取消选中此选项

   - 选项：URL

     输入WebDAV服务器的URL。

   - 选项：用户标识符

     在WebDAV服务器上输入您的用户标识符。

   - 选项：密码

     请输入您的密码。

   - 选项：通过 MCP 服务器保存

     选中此选项可以通过 Model Context Protocol（MCP）服务器保存页面。

     MCP 是一种开放协议，用于规范应用如何向 AI 模型提供上下文信息。启用此选项后，SingleFile 会将保存的页面发送到实现了文件系统工具（write_file、get_file_info）的 MCP 服务器。

     除非你已经有正在运行的 MCP 服务器，否则建议取消选中此选项

   - 选项：服务器 URL

     输入 MCP 服务器的 URL（例如：`http://localhost:3000/mcp`）。

     服务器必须按照 MCP 协议中指定的方式实现 HTTP 传输，并提供 `write_file` 和 `get_file_info` 工具。

   - 选项：认证令牌

     输入 MCP 服务器的 Bearer 认证令牌（可选）。

     如果 MCP 服务器需要认证，SingleFile 会在每个请求中通过 `Authorization: Bearer <token>` 请求头发送该令牌。

   - 选项：上传到谷歌云端硬盘

     选中此选项可将页面保存在Google云端硬盘上。

     SingleFile请求的权限只允许它访问它创建的文件和文件夹。当您取消选中此选项时，SingleFile会自动撤销其对您的Google Drive帐户的访问权限。

     建议取消选中此选项

   - 选项：上传到亚马逊S3

     选中此选项可将页面保存在Amazon S3上。您必须配置bucket策略以包含权限`s3：放置对象`，以及`s3：头部对象`或`s3：列表对象`，或`s3：获取对象`如果您不想在文件名冲突时覆盖或跳过现有文件。

     建议取消选中此选项

   - 选项：域

     输入Amazon S3服务器的域（例如。`s3.amazonaws.com`).

   - 选项：地区

     输入Amazon S3服务器的区域（例如。`美国东部-1`).

   - 选项：存储桶名称

     在Amazon S3上输入将存档已保存页面的存储桶的名称。页面将上传到`<存储桶名称><域名>`

     .
   - 选项：访问密钥

     在Amazon S3上输入您的访问密钥（例如。`akdo525k84ljth4s蛋糕`).

   - 选项：密钥

     在Amazon S3上输入您的密钥。

   - 选项：上传到Dropbox

     选中此选项可将页面保存在Dropbox上。

     SingleFile请求的权限只允许它访问它创建的文件和文件夹。

     建议取消选中此选项

   - 选项：使用SingleFile Companion保存

     选中此选项可将保存过程委托给SingleFile Companion。它是一个在浏览器之外运行的程序，可以帮助使保存过程更加透明。它还允许将页面保存在下载目录以外的其他目录中。您可以找到更多信息在这里

     建议取消选中此选项

   - 选项：上传到REST表单API

     选中此选项可将页面保存在接受表单数据的API终结点上。

     建议取消选中此选项

   - 选项：URL

     输入API终结点的URL。

   - 选项：授权令牌

     提供“Bearer”令牌的值以验证请求。

   - 选项：存档数据字段名称

     输入将包含已保存页面数据的字段的名称。

   - 选项：存档URL字段名

     输入将包含已保存页面URL的字段名称。

   网络

   - 选项：被阻止的资源

     选中以下选项以阻止下载相应的资源类型。

   - 选项：阻止混合内容

     选中此选项可在以HTTPS查看页面时阻止从HTTP提供的活动内容。您可以找到有关混合内容页面的更多信息在这里.

   - 选项：“接受”标题

     输入“Accept”HTTP标头以下值用于调整对相应资源类型的支持。

     建议保留这些值事实上

   - 选项：设置最大大小（MB）

     选中此选项可从保存的页面中删除超过给定大小的嵌入式资源（即图像、样式表、脚本和iframe）。

   - 选项：最大大小（MB）

     输入最大大小（MB）。

   - 选项：设置最大下载延迟

     选中此选项可从保存的页面中删除超过给定下载时间的嵌入式资源（即图像、样式表、脚本和iframe）。

   - 选项：最大下载延迟

     输入最大下载延迟（秒）。

   - 选项：在跨源错误时传递“Referer”标头

     选中此选项，在下载跨源资源时发生401、403或404 HTTP错误后，传递带有“origin”策略的HTTP标头“Referer”。如果无法下载被热链接保护阻止的资源，则应启用此选项。

     建议取消选中此选项

   注释编辑器

   - 选项：默认模式

     打开注释编辑器时选择默认模式。可用的选项有：

     - `正常的`：默认值
     - `编辑页面`：启用按钮
     - `设置页面格式`：启用按钮如果页面可以格式化
     - `删除元素`：启用按钮
     - `移除外部元素`：启用按钮
   - 选项：在注释编辑器中格式化页面时应用系统主题

     如果您不想在注释编辑器中单击“格式化页面以提高可读性”按钮时应用操作系统或浏览器的主题（例如深色或浅色），请取消选中此选项。

   - 选项：如果页面中有未保存的更改，则发出警告

     选中此选项可在您离开注释编辑器（例如关闭选项卡）而不保存更改时显示一个阻止弹出窗口。

     建议检查此选项

   - 选项：保存前编辑页面

     选中此选项可在保存任何页面之前打开注释编辑器。选中此选项会从上下文菜单中删除“注释并保存页面…”条目。

     建议取消选中此选项

   - 选项：查看用SingleFile保存的页面时打开注释编辑器

     选中此选项可在显示SingleFile保存的页面时打开注释编辑器。

     建议取消选中此选项

   - 选项：显示信息栏

     选中此选项可在注释编辑器中显示页面时显示信息栏。

     建议取消选中此选项

   书签

   - 选项：保存新创建书签的页面

     选中此选项可保存添加到书签中的页面。请注意，如果要保存的页面尚未显示在选项卡中，SingleFile将临时打开一个新的选项卡来保存页面。

     建议取消选中此选项

   - 选项：将新书签链接到已保存的页面

     选中此选项，将添加到书签中的页面的URL替换为磁盘上已保存页面的文件URI。

     建议取消选中此选项

   - 选项：忽略文件夹

     输入要忽略的书签文件夹名称列表。文件夹名称必须用逗号分隔。SingleFile将忽略在包含这些名称的文件夹中添加的书签。

   - 选项：允许的文件夹

     输入要允许的书签文件夹名称列表。文件夹名称必须用逗号分隔。SingleFile将仅保存在包含这些名称的文件夹中添加的页面。

   自动保存

   - 选项：页面加载后或页面卸载时自动保存

     选中此选项可在加载后自动保存页面。如果在页面完全加载之前浏览到另一个页面，则页面将在卸载之前保存。当此选项处于活动状态时，您可以保证页面将始终被保存。在卸载页面之前保存页面时，某些框架内容可能会丢失（如果您选中了“删除框架”）。

   - 选项：页面加载后自动保存

     选中此选项可在加载后自动保存页面。

   - 选项：页面卸载时自动保存

     选中此选项可在卸载前自动保存页面，而不是在加载后保存页面。当此选项处于活动状态时，您可以保证页面始终会被保存，但某些框架内容可能会丢失（如果您选中“删除框架”）。

   - 选项：选项卡丢弃时自动保存

     选中此选项可在丢弃选项卡时自动保存页面。某些框架内容可能会丢失（如果选中“删除框架”）。

   - 选项：删除标签时自动保存

     选中此选项可在关闭选项卡时自动保存页面。某些框架内容可能会丢失（如果选中“删除框架”）。

   - 选项：加载后自动保存等待延迟

     当勾选“页面加载时自动保存或页面卸载时自动保存”或“页面加载后自动保存”时，输入保存页面之前等待的延迟秒数。

   - 选项：定期自动保存

     选中此选项可在加载后定期自动保存页面。

   - 选项：周期

     在选中“定期自动保存”选项时，输入每页保存前等待的延迟秒数。

   - 选项：使用SingleFile Companion保存页面

     选中此选项可将捕获和保存过程委托给SingleFile Companion。它是一个在浏览器之外运行的程序，可以帮助使保存过程更加透明。它还允许将页面保存在下载目录以外的其他目录中。您可以找到更多信息在这里

   杂项。

   - 选项：添加存在证明

     选中此选项可创建要保存的页面存在的全球证明。

     - 什么是存在证明（数据锚定）？
       数据锚定包括通过将数据链接到防篡改和带时间戳的区块链来为数据构建带时间戳存在证明。数据锚定实施依赖于比特币区块链的弹性和不变性，以提供最佳的安全级别
     - 这如何保护我的数据？
       锚定机制仅处理数据展示。您的数据将保留在您计算指纹的地方，即浏览器中。他们的机密性完全得到了保护。
     - 备份后的第二天，您可以在此处免费获得证明收据：gildas-lormeau.github.io/singlefile-woleet/index.html证明收据将用于验证证据的有效性

     更多信息doc.woleet.io

   - 选项：访问令牌

     在Woleet上输入您的个人访问令牌，请参阅注册页面更多信息请访问Woleet。

   - 选项：在后台保存页面

     如果您在保存页面时收到无效的文件名，如“37bec68b-446a-46a5-8642-19a89c231b46.html”或下载中断，请取消选中此选项。如果您希望“另存为”对话框记住上次保存的路径，也可以取消选中此选项。取消选中此选项可防止在文件名模板中使用子目录。

     建议检查此选项

   - 选项：处理后在控制台中显示统计数据

     选中此选项可在浏览器的JavaScript开发工具中显示有关处理的统计信息。选中此选项可能会增加CPU消耗和保存页面所需的时间。

     建议取消选中此选项

   自动设置规则

   - 自动设置规则允许您将完整或部分URL与配置文件相关联。它还允许为自动保存关联特定的配置文件，或禁用它（选中“显示‘自动保存配置文件’列”）。当两个或多个规则与要保存的页面的URL匹配时，将选择URL最长的规则。特殊配置文件“-”表示当前配置文件。
   - 您可以使用特殊值“*”作为URL来创建适用于所有URL的规则
   - 您可以通过在URL前加上“regexp:”来使用正则表达式（例如，“regexp:.*\.com”来匹配所有包含“.com”的URL）。当零条或多条基于URL的规则和一条或多个基于正则表达式的规则与一个URL匹配时，将选择基于正则表达式最长的规则。

   表单按钮

   - 同步选项

     选中此选项可同步您的选项，并使其在您登录的浏览器的不同设备上的所有实例中可用。

   - 重置

     将所有选项重置为默认值。

4. 注释编辑器

   通过在上下文菜单中选择“注释并保存页面”或启用“注释编辑器>保存前编辑页面”选项，可以打开注释编辑器。它允许您：

   - 通过单击以下按钮之一添加注释：
   - 通过单击按钮隐藏或显示笔记
   - 通过单击以下按钮之一突出显示文本：
   - 通过单击按钮隐藏或显示突出显示的文本
   - 单击按钮删除突出显示的文本
   - 单击按钮编辑页面
   - 通过单击按钮格式化页面以提高可读性（如果可能）
   - 单击按钮删除内容（内部元件）或（外部元素）
   - 单击按钮撤消删除或按钮（全部撤消）
   - 点击按钮即可删除redo
   - 单击按钮打印页面或按`Ctrl-P`
   - 单击按钮保存页面或按`Ctrl-S`

   使用删除内容时，可以使用以下键盘快捷键或:

   - `Tab`：展开选择
   - `Shift-Tab`：减少选择
   - `Space`：删除所选元素
   - `Ctrl-Z`：撤消上次删除
   - `Ctrl-Shift-Z`：重新执行上次删除
   - `Ctrl`：选择/取消选择多个元素，释放`Ctrl键`键验证选择
   - `Shift`：暂时反转最后一个选定元素的移除类型（即移除内部元素或移除外部元素），并重置其他选定元素（如果有的话）
   - `Escape`：重置所选元素
5. 模板变量

   模板变量用于自定义信息栏内容或已保存页面的文件名。它们有助于插入动态值，如保存日期或页面标题。

   您可以通过添加以下内容来限制动态值的长度`[maxByteSize]`或`[maxCharSizech]`就在变量名之后。这个`maxByteSize`value是该值的最大长度（以字节为单位）（例如“{page-title}[20]”将标题限制为20个字节）。这个`maxCharSize`value是以字符为单位的最大长度（例如`{page-title}[10ch]`将标题限制为10个字符）。

   - `{navigator-language}`: 浏览器的语言
   - `{page-title}`: 页面的标题
   - `{page-heading}`: 页面中 H1 标签的内容
   - `{page-language}`: 页面的语言
   - `{page-description}`: 页面的描述
   - `{page-author}`: 页面的作者
   - `{page-creator}`: 页面的创建者
   - `{page-publisher}`: 页面的出版者
   - `{datetime-iso}`: 保存日期和时间的 ISO 格式（例如 "2018-09-15T22_38_26_317Z"）
   - `{datetime-utc}`: 保存日期和时间的 UTC 格式（例如 "Sat, 15 Sep 2018 22_38_26 GMT"）
   - `{datetime-locale}`: 日期和时间的本地化值（例如 "9_16_2018, 12_54_31 AM"）
   - `{date-iso}`: 保存日期的 ISO 格式（例如 "2018-09-15"）
   - `{date-locale}`: 保存日期的本地化值（例如 "16_09_2018"）
   - `{time-iso}`: 保存时间的 ISO 格式（例如 "22_38_26_317"）
   - `{time-locale}`: 保存时间的本地化值（例如 "00_38_26"）
   - `{time-ms}`: 保存时间的 Unix Epoch 后的毫秒数（例如 1563582018000）
   - `{day-utc}`: 保存日期的 UTC 格式的天数（例如 "15"）
   - `{day-locale}`: 天数的本地化值（例如 "15"）
   - `{month-utc}`: 保存日期的 UTC 格式的月份（例如 "09"）
   - `{month-locale}`: 月份的本地化值（例如 "09"）
   - `{year-utc}`: 保存日期的 UTC 格式的年份（例如 "2018"）
   - `{year-locale}`: 年份的本地化值（例如 "2018"）
   - `{hours-utc}`: 保存日期的 UTC 格式的小时（例如 "20"）
   - `{hours-locale}`: 小时的本地化值（例如 "22"）
   - `{minutes-utc}`: 保存日期的 UTC 格式的分钟（例如 "38"）
   - `{minutes-locale}`: 分钟的本地化值（例如 "38"）
   - `{seconds-utc}`: 保存日期的 UTC 格式的秒数（例如 "31"）
   - `{seconds-locale}`: 秒数的本地化值（例如 "31"）
   - `{visit-datetime-iso}`: 访问日期和时间的 ISO 格式（例如 "2018-09-15T22_38_26_317Z"）
   - `{visit-datetime-utc}`: 访问日期和时间的 UTC 格式（例如 "Sat, 15 Sep 2018 22_38_26 GMT"）
   - `{visit-datetime-locale}`: 日期和时间的本地化值（例如 "9_16_2018, 12_54_31 AM"）
   - `{visit-date-iso}`: 访问日期的 ISO 格式（例如 "2018-09-15"）
   - `{visit-date-locale}`: 访问日期的本地化值（例如 "16_09_2018"）
   - `{visit-time-iso}`: 访问时间的 ISO 格式（例如 "22_38_26_317"）
   - `{visit-time-locale}`: 访问时间的本地化值（例如 "00_38_26"）
   - `{visit-time-ms}`: 访问时间的 Unix Epoch 后的毫秒数（例如 1563582018000）
   - `{visit-day-utc}`: 访问日期的 UTC 格式的天数（例如 "15"）
   - `{visit-day-locale}`: 访问日期的本地化天数（例如 "15"）
   - `{visit-month-utc}`: 访问日期的 UTC 格式的月份（例如 "09"）
   - `{visit-month-locale}`: 访问日期的本地化月份（例如 "09"）
   - `{visit-year-utc}`: 访问日期的 UTC 格式的年份（例如 "2018"）
   - `{visit-year-locale}`: 访问日期的本地化年份（例如 "2018"）
   - `{visit-hours-utc}`: 访问日期的 UTC 格式的小时（例如 "20"）
   - `{visit-hours-locale}`: 访问日期的本地化小时（例如 "22"）
   - `{visit-minutes-utc}`: 访问日期的 UTC 格式的分钟（例如 "38"）
   - `{visit-minutes-locale}`: 访问日期的本地化分钟（例如 "38"）
   - `{visit-seconds-utc}`: 访问日期的 UTC 格式的秒数（例如 "31"）
   - `{visit-seconds-locale}`: 访问日期的本地化秒数（例如 "31"）
   - `{url-href}`: 页面的 URL（例如 "http://example.com/category/index.html"）
   - `{url-href-digest-sha-1}`: 页面的 URL 的 SHA-1 哈希值（例如 4b826844d9f5c128533e4ff14d746334f3ac9e00）注意：仅支持文件名，而不支持信息栏
   - `{url-href-flat}`: 替换斜杠后的页面 URL（例如 "http__example.com_category_index.html"）
   - `{url-pathname}`: URL 的路径名（例如 "category/index.html"）
   - `{url-pathname-flat}`: 替换斜杠后的 URL 路径名（例如 "category_index.html"）
   - `{url-last-segment}`: 路径名的最后一部分（没有扩展名）或主机（如果没有找到）（例如 "index"）
   - `{url-filename}`: URL 的文件名（例如 "index.html"）
   - `{url-protocol}`: URL 的协议（例如 "https"）
   - `{url-host}`: URL 的主机名 + 端口（例如 "example.com_8080"）
   - `{url-hostname}`: URL 的主机名（例如 "example.com"）
   - `{url-hostname-suffix}`: URL 主机名的后缀（例如 "com"）
   - `{url-hostname-domain}`: URL 主机名的域名（例如 "example"）
   - `{url-hostname-root}`: URL 主机名的根（例如 "example.com"）
   - `{url-hostname-subdomains}`: URL 主机名的子域名（例如 "sub" 对于 "sub.example.com"），"www" 被忽略
   - `{url-port}`: URL 的端口（例如 "8080"）
   - `{url-username}`: URL 的用户名（例如 "john_doe"）
   - `{url-password}`: URL 的密码（例如 "qwerty123"）
   - `{url-search}`: URL 的搜索字符串（例如 "order=ascending"）
   - `{url-hash}`: URL 的哈希值（例如 "chapter-2"）
   - `{url-referrer}`: 链接到该页面的页面的 URI（例如 "http://example.com"）
   - `{url-referrer-flat}`: 链接到该页面的页面的 URI，斜杠被替换（例如 "http_example.com"）
   - `{url-original}`: 页面的原始 URL（例如 "http://example.com/index.html"）
   - `{bookmark-pathname}`: 新创建的书签的路径名（例如 "我的书签/上个月"），当选项 "书签 > 保存新创建书签的页面" 被启用时
   - `{bookmark-pathname-flat}`: 新创建的书签的路径名，斜杠被替换（例如 "我的书签_上个月"），当选项 "书签 > 保存新创建书签的页面"被启用时
   - `{tab-id}`: 标签的唯一标识符（例如 "326"）
   - `{tab-index}`: 标签在窗口中的索引（例如 "1"）
   - `{digest-sha-256}`: 整个页面内容的 SHA-256 哈希值（例如e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855）注意：仅支持文件名，而不支持信息栏
   - `{digest-sha-384}`: 整个页面内容的 SHA-384 哈希值注意：仅支持文件名，而不支持信息栏
   - `{digest-sha-512}`: 整个页面内容的 SHA-512 哈希值注意：仅支持文件名，而不支持信息栏
   - `{profile-name}`: 用于保存页面的配置文件名称
   - `{filename-extension}`: 根据文件格式的文件名扩展名（例如 "html"、"u.zip.html"、"zip.html"、"zip"）
   - `{save-action}`: 保存页面时使用的操作（例如 "page"、"selection"）
   - `{options-json}`: 用于保存页面的选项的 JSON 表示。每个属性名称采用小驼峰命名法（例如 "blockScripts"）
   - `{options-text}`: 用于保存页面的选项的文本表示。文本表示由选项及其值的列表组成，以换行符分隔（例如 "saveRawPage: false\includeInfobar: true..."）
6. 模板函数

   模板函数用于格式化模板中的值或根据参数插入值。

   函数调用的语法是 `%function-name<parameter>`。您可以传递多个用管道字符分隔的参数（例如 "%function-name<parameter1|parameter2>"）。与模板变量一样，您可以通过在函数名称后添加 `[maxByteSize]` 或 `[maxCharSizech]` 来限制动态值的长度。

   - `%if-empty<value|default>`: 如果 `value` 为空，则返回 `default` 值（例如 "%if-empty<{page-title}|Untitled>" 当页面标题为空时返回 "Untitled"）。您还可以传递多个用管道字符分隔的值（例如 "%if-empty<{page-title}|{page-heading}|Untitled>" 当页面标题不为空时返回页面标题，如果不为空则返回页面标题，如果两个都为空则返回 "Untitled"）。
   - `%if-not-empty<value|default>`: 如果 `value` 不为空，则返回 `default` 值（例如 "%if-not-empty<{page-title}({page-title})>" 当页面标题不为空时返回带括号的页面标题）。您也可以传递多个用管道字符分隔的值，就像使用 `%if-empty` 函数一样。
   - `%if-equals<value|expected|trueValue|falseValue>`: 如果 `value` 等于 `expected`，则返回 `trueValue`，否则返回 `falseValue`（例如 "%if-equals<{page-title}|Untitled|{page-heading}|{page-title}>" 当页面标题等于 "Untitled" 时返回页面标题，否者返回页面标题）。
   - `%if-not-equals<value|expected|trueValue|falseValue>`: 如果 `value` 不等于 `expected`，则返回 `trueValue`，否则返回 `falseValue`（例如 "%if-not-equals<{page-title}|Untitled|{page-title}|{page-heading}>" 当页面标题不等于 "Untitled" 时返回页面标题，否者返回页面标题）。
   - `%if-contains<value|expected|trueValue|falseValue>`: 如果 `value` 包含 `expected`，则返回 `trueValue`，否则返回 `falseValue`（例如 "%if-contains<{page-title}|Untitled|{page-heading}|{page-title}>" 当页面标题包含 "Untitled" 时返回页面标题，否者返回页面标题）。
   - `%if-not-contains<value|expected|trueValue|falseValue>`: 如果 `value` 不包含 `expected`，则返回 `trueValue`，否则返回 `falseValue`（例如 "%if-not-contains<{page-title}|Untitled|{page-title}|{page-heading}>" 当页面标题不包含 "Untitled" 时返回页面标题，否者返回页面标题）。
   - `%substring<value|start|end>`: 返回 `value` 的子字符串（例如 "%substring<{page-title}|0|20>" 返回页面标题的前20个字符，"%substring<{page-title}|5>" 返回页面标题去掉前5个字符的部分）。
   - `%lowercase<value>`: 返回 `value` 的小写形式（例如 "%lowercase<{page-title}>" 返回页面标题的小写形式）。
   - `%uppercase<value>`: 返回 `value` 的大写形式（例如 "%uppercase<{page-title}>" 返回页面标题的大写形式）。
   - `%capitalize<value>`: 返回 `value` 的首字母大写形式（例如 "%capitalize<{page-title}>" 返回页面标题的首字母大写形式）。
   - `%replace<value|search|replacement>`: 返回 `value`，将所有 `search` 值替换为 `replacement`（例如 "%replace<{page-title}| |_>" 将页面标题中的所有空格替换为下划线）。
   - `%repeat<value|count>`: 返回 `value` 重复 `count` 次（例如 "%repeat<{page-title}|3>" 将页面标题重复3次）。
   - `%index-of<value|search|fromIndex>`: 返回 `value` 中 `search` 首次出现的索引（例如 "%index-of<{page-title}|"Title">" 返回字符串 "Title" 在 `page-title` 中首次出现的索引）。
   - `%last-index-of<value|search|fromIndex>`: 返回 `value` 中 `search` 最后一次出现的索引（例如 "%last-index-of<{page-title}|"Title">" 返回字符串 "Title" 在 `page-title` 中最后一次出现的索引）。
   - `%length<value>`: 返回 `value` 的长度（例如 "%length<{page-title}>" 返回页面标题的长度）。
   - `%trim<value>`: 返回 `value`，去掉所有前导和后缀空白字符（例如 "%trim<{page-title}>" 去掉页面标题的所有前导和后缀空白字符）。
   - `%trim-left<value>`: 返回 `value`，去掉所有前导空白字符（例如 "%trim-left<{page-title}>" 去掉页面标题的所有前导空白字符）。
   - `%trim-right<value>`: 返回 `value`，去掉所有后缀空白字符（例如 "%trim-right<{page-title}>" 去掉页面标题的所有后缀空白字符）。
   - `%pad-left<value|length|pad>`: 返回 `value`，在左侧添加 `pad` 以使 `value` 的长度等于 `length`（例如 "%pad-left<{page-title}|20|_>" 在页面标题的左侧添加下划线，以使其长度等于20）。
   - `%pad-right<value|length|pad>`: 返回 `value`，在右侧添加 `pad` 以使 `value` 的长度等于 `length`（例如 "%pad-right<{page-title}|20|_>" 在页面标题的右侧添加下划线，以使其长度等于20）。
   - `%url-search-name<index>`: 指定索引处的搜索参数名称（例如 "%url-search-name<0>" 获取第一个搜索参数的名称）。
   - `%url-search-value<index>`: 指定索引处的搜索参数值（例如 "%url-search-value<0>" 获取第一个搜索参数的值）。
   - `%url-search-named-value<name>`: 指定名称的搜索参数的值（例如 "%url-search-named-value<id>" 获取名为 "id" 的搜索参数的值）。
   - `%url-segment<index>`: 指定索引处的路径名段（例如 "%url-segment<0>" 获取路径名的第一个段）。
   - `%url-hostname-subdomain<index>`: 指定索引处的主机名子域（例如 "%url-hostname-subdomain<0>" 获取主机名的第一个子域）。
   - `%stringify<value>`: 指定值的字符串表示（例如 "%stringify<{page-title}>" 获取页面标题的字符串表示）。
   - `%encode-uri<value>`: 指定值的 URI 编码表示（例如 "%encode-uri<{page-title}>" 获取页面标题的 URI 编码表示）。
   - `%decode-uri<value>`: 指定值的 URI 解码表示（例如 "%decode-uri<{page-title}>" 获取页面标题的 URI 解码表示）。
   - `%encode-uri-component<value>`: 指定值的 URI 编码表示（例如 "%encode-uri-component<{page-title}>" 获取页面标题的 URI 编码表示）。
   - `%decode-uri-component<value>`: 指定值的 URI 解码表示（例如 "%decode-uri-component<{page-title}>" 获取页面标题的 URI 解码表示）。
   - `%encode-base64<value>`: 指定值的 Base64 编码表示（例如 "%encode-base64<{page-title}>" 获取页面标题的 Base64 编码表示）。
   - `%decode-base64<value>`: 指定值的 Base64 解码表示（例如 "%decode-base64<{page-title}>" 获取页面标题的 Base64 解码表示）。
   - `%page-element-text<selector>`: 获取第一个匹配指定选择器的元素的文本内容（例如 "%page-element-text<h1>" 获取第一个 H1 元素的文本内容）。
   - `%page-element-attribute<selector|attribute>`: 获取第一个匹配指定选择器的元素的指定属性值（例如 "%page-element-attribute<h1|class>" 获取第一个 H1 元素的 class 属性值）。
   - `%date-locale<locales>`: 日期和时间的本地化值（例如 "%date-locale<en-US>" 表示美国英语格式的日期和时间）。
   - `%time-locale<locales>`: 时间的本地化值（例如 "%time-locale<en-US>" 表示美国英语格式的时间）。
   - `%datetime-locale<locales>`: 日期和时间的本地化值（例如 "%datetime-locale<en-US>" 表示美国英语格式的日期和时间）。
   - `%datetime-custom<locale|year|month|day|weekday|hour|minute|second|hour12|time-zone|fractional-seconds-digits|time-zone-name|era|locale-matcher>`: 根据指定的区域和选项格式化的日期和时间。请参见下面的选项列表。您可以将 `` （空格字符）作为值传递，以使用选项的默认值。您还可以省略列表末尾的选项。例如，要以美国英语格式格式化日期和时间，并包含年份、日期和星期几，可以使用 "%datetime-custom<en-US|numeric| |numeric| |numeric>"。
     - `locale`: 作为 BCP 47 语言标签使用的区域（例如 "en-US"）。
     - `year`: 年份格式（即 "numeric", "2-digit"）。
     - `month`: 月份格式（即 "numeric", "2-digit", "narrow", "short", "long"）。
     - `day`: 日期格式（即 "numeric", "2-digit"）。
     - `weekday`: 星期几格式（即 "narrow", "short", "long"）。
     - `hour`: 小时格式（即 "numeric", "2-digit"）。
     - `minute`: 分钟格式（即 "numeric", "2-digit"）。
     - `second`: 秒格式（即 "numeric", "2-digit"）。
     - `hour12`: 是否使用12小时制（即 "true", "false"）。
     - `time-zone`: IANA时区数据库中的时区（例如 "UTC", "GMT", "EST", "PST", "America/New_York"）。
     - `fractional-seconds-digits`: 小数秒数字的数量（即 "1" 到 "3"）。
     - `time-zone-name`: 时区名称格式（即 "short", "long", "shortOffset", "longOffset", "shortGeneric", "longGeneric"）。
     - `day-period`: 日期周期（即 "narrow", "short", "long"）。
     - `era`: 纪元（即 "narrow", "short", "long"）。
     - `locale-matcher`: 区域匹配器（例如 "lookup", "best fit"）。
     您可以在DateTimeFormat 构造函数 文档中找到有关选项的更多信息。
   - `%option-value<key>`：指定选项的值（例如，“displayInfobar”选项的值为“%option value<displayInfobar>”）
7. 与其他扩展集成

   SingleFile可以接收来自其他扩展名的消息。消息必须发送到SingleFile的扩展ID，并且必须是包含以下值之一的字符串：

   - `“保存页面”`：保存当前页面
   - `“编辑并保存页面”`：在注释编辑器中编辑当前页面并保存
   - `“保存所选链接”`：保存所选内容中的所有链接
   - `“保存所选内容”`：保存所选内容
   - `“保存所选选项卡”`：保存所选选项卡
   - `“保存未固定的选项卡”`：保存未固定的选项卡
   - `“保存所有选项卡”`：保存所有选项卡
8. 技术说明
   - 所有图像都转换为base64.
   - 除框架内容外的所有资源都使用以下方式注入文档中数据URI方案.
   - 使用srcdoc属性将框架内容作为文本注入文档中。
9. 已知问题
   - 所有浏览器
     - 出于安全原因，您无法保存托管在上的页面https://chrome.google.com, https://addons.mozilla.org以及其他一些Mozilla域名。当这种情况发生时，🚫 显示在SingleFile图标的顶部。
     - 出于安全原因，SingleFile有时无法保存画布的图像表示和视频元素的快照。
     - 默认情况下，无法记住上次保存的路径。要规避此限制，请禁用“杂项>在后台保存页面”选项。
     - 以下字符在文件名中被替换为其全角等效符号：~、+、?、%、*、:、|、"、<、>、\。替换后的字符分别是：～、＋、？、％、＊、：、｜、＂、＜、＞、＼。其他无效字符会被替换为 _。这样做是为了兼容不同的操作系统和文件系统。如果不需要这种兼容性，并且知道自己在做什么，可以在隐藏选项中更改禁止字符和替换字符的列表。
   - 基于Chromium的浏览器
     - 您必须在扩展页面中启用“允许访问文件URL”选项，以便在查看已保存的页面时显示信息栏，保存或注释存储在文件系统上的页面。
     - 如果已保存页面的文件名看起来像“56833935-156b-4d8c-a00f-19599c6513d3”，请禁用“其他>在后台保存页面”选项。重新安装浏览器也可能解决此问题。
     - 禁用“文件名”选项，打开“另存为”对话框以确认文件名，只有在禁用“下载前询问每个文件的保存位置”时才有效chrome://settings/downloads
   - 火狐
     - 如果设置为“提示输入名称”，则“文件名>文件名冲突解决”选项不起作用。
     - 有时，SingleFile无法保存沙盒iframe的内容。
     - 在处理文件系统中的页面时，外部资源（如图像、样式表、字体等）将不会嵌入到保存的页面中。
10. 排除未知问题

    如果您发现未知问题，请按照以下步骤操作：

    - 以匿名方式保存页面。
    - 如果以隐身方式保存页面没有解决问题，请重置SingleFile选项。
    - 如果重置选项没有解决问题，请重新启动浏览器。
    - 如果重新启动浏览器没有解决问题，请尝试禁用所有其他扩展，查看是否存在冲突。
    - 如果存在冲突，请尝试确定针对哪个扩展。
    - 请报告该问题在这里并简要描述了如何复制它。

    欢迎提出建议：）

11. 贡献者
    - 由Hajiagha_Sadikhov完成的阿塞拜疆语翻译(GitHub配置文件)
    - yfdyh000完成的中文翻译(GitHub配置文件)KrasnayaPloshchad(GitHub配置文件)，冻疮(GitHub配置文件)，夜鹰(GitHub配置文件)，lqzhgood(GitHub配置文件)
    - 弗罗斯特开拓者的中国传统翻译(GitHub配置文件)，lqzhgood(GitHub配置文件)
    - 由jooleer完成的荷兰语翻译(GitHub配置文件)
    - 由jooleer完成的荷兰语翻译(GitHub配置文件)
    - 由womotroll完成的德语翻译(GitHub配置文件)，班曼(GitHub配置文件)
    - 意大利语翻译由Fastbyte01完成(GitHub配置文件)
    - 日语翻译，由四天王（Shitennouji）完成(GitHub配置文件)
    - xesarni完成的波兰语翻译(GitHub配置文件)
    - 葡萄牙语翻译由@Blackspirits完成(GitHub配置文件)
    - 葡萄牙语巴西语翻译由@mezysinc，Blackspirits完成(GitHub配置文件)
    - 俄语翻译由rstp14完成(GitHub配置文件)克拉莫拉RU(GitHub配置文件)，索洛科特(GitHub配置文件)
    - 西班牙语翻译由strel完成(GitHub配置文件)
    - 瑞典语翻译由NickWick13完成(GitHub配置文件)
    - 土耳其语翻译由hbaklan943完成(GitHub配置文件)
    - 乌克兰语翻译由perdolka完成(GitHub配置文件)吉尔达斯·洛默
12. 图标
    - 图标制作人基兰化学从www.flaticon.com已获得许可CC 3.0