文档管理中心
我的
您当前正在浏览新版开发者文档中心,目录分类和层级有所调整。点击左侧当前文档分类名称前的“☰”图标,可切换文档分类。 了解新版目录
指南与API参考指南应用框架ArkWeb(方舟Web)处理网页内容使用Web组件的智能分词能力

使用Web组件的智能分词能力

从API version 20开始,ArkWeb提供了H5页面内的文本分词识别功能,支持文本分词高亮、分词长按预览及文本选择菜单扩展等。这些功能需将enableDataDetector设置为true,默认为false。

此功能主要用于单页H5页面内容的实体识别,能够自动识别页面中的电话号码、网址等信息,并提供便捷的交互操作。启用此功能后,用户可以直接在页面中与识别的实体交互,如点击电话号码进行呼叫,点击地址在地图中查看,从而提升用户体验。

可识别的实体类型包括电话、链接、邮箱、地址和时间,详见TextDataDetectorType。

文本分词高亮

Web组件内的H5页面加载完成后,自动识别并高亮标注页面内的特殊实体。页面变化后新出现的实体不会被高亮标注。

特殊实体的高亮过滤规则如下:

  • 不处理输入框内、可编辑区域内的文本实体。
  • 不处理<a></a>标签内的文本实体。
  • 不处理跨域iframe内、两层及以上嵌套iframe内的文本实体。
  • 跨节点的实体不会被高亮,如<p>星<span>期六</span></p>。

页面中文本实体高亮后,将转变为超链接形式。触摸点击或鼠标左键点击实体,会根据实体类型弹出操作菜单。

收起
自动换行
深色代码主题
复制
  1. import { webview } from '@kit.ArkWeb';
  2. @Entry
  3. @Component
  4. struct Index {
  5. webController: webview.WebviewController = new webview.WebviewController();
  6. build() {
  7. Column() {
  8. Row() {
  9. Button('Refresh')
  10. .onClick(() => {
  11. this.webController.refresh();
  12. })
  13. }
  14. Web({
  15. src: $rawfile('index.html'),
  16. controller: this.webController
  17. })
  18. .enableDataDetector(true)
  19. .dataDetectorConfig({
  20. types: [] // 实体识别类型,为空则识别所有类型
  21. })
  22. }
  23. .height('100%')
  24. .width('100%')
  25. }
  26. }

加载的html文件。

收起
自动换行
深色代码主题
复制
  1. <!-- index.html -->
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <title>Test</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. </head>
  8. <body>
  9. <p>电话:400-123-4567</p>
  10. <p>邮箱:test@example.com</p>
  11. <p>网址:https://www.example.com/</p>
  12. <p>日期:2025.06.01</p>
  13. <p>地址:北京市海淀区中关村</p>
  14. <p>不会高亮的星<span>期六</span>与会高亮的星期六</p>
  15. </body>
  16. </html>

点击实体文本,弹出对应的操作菜单,如下图。

鼠标右键点击、鼠标拖拽将触发超链接的默认行为。

接口dataDetectorConfig未被使用,或其参数TextDataDetectorConfig的enablePreviewMenu设置为false时,长按、拖拽将触发超链接的默认行为,如下图。

页面文本元素的计算样式存在user-select:none时,实体菜单中“选择文本”的选项无效,但在copyOptions不为CopyOptions.None时,仍可以复制实体文本。

分词长按预览

使用分词长按预览功能时,需要额外配置dataDetectorConfig:

收起
自动换行
深色代码主题
复制
  1. Web({
  2. src: $rawfile('index.html'),
  3. controller: this.webController
  4. })
  5. .enableDataDetector(true)
  6. .dataDetectorConfig({
  7. enablePreviewMenu: true, // 配置分词长按预览功能
  8. types: []
  9. })

在copyOptions不为CopyOptions.None时,长按被高亮的实体文本,会弹出预览菜单,如下图。

通过bindSelectionMenu绑定的自定义菜单与分词长按预览菜单互不影响。长按被高亮的分词超链接不会弹出自定义超链接菜单,长按普通超链接也不会弹出分词预览菜单。

文本选择菜单扩展

从API version 22开始,支持通过enableSelectedDataDetector单独配置文本选择AI菜单的启用情况。

在非编辑区域中,选中的文本满足以下条件时,文本选择菜单将显示相应的AI菜单项:

  • 选中文本经过UTF-8编码转换后,其字节长度不超过255字节。
  • 选中文本中仅包含一个匹配识别类型的实体(可通过dataDetectorConfig配置支持的识别类型)。
  • 不处于“全选”操作状态下的文本。

AI菜单项的出现与是否选中高亮的实体文本无关,只要满足上述条件,AI菜单项就会显示。