heroMan
heroMan
  • 发布:2026-01-12 17:52
  • 更新:2026-01-12 17:52
  • 阅读:63

uniapp-x开发的小程序,如何实现富文本内容点击监听

分类:uni-app x

方法1. rich-text组件,但是@itemClick不支持小程序。
方法2. web-view组件,只能通过src加载文件,我想着是搞一个本地html文件,但是报错

<web-view id="web-view" ref="web-view" class="web-view" src="/static/html/local.html" @message="message"  
          @error="error" @loading="loading" @load="load" @download="download">  
        </web-view>

报错

 parse url "/static/html/local.html" error. message: Failed to construct 'URL': Invalid URL(env: macOS,mp,1.06.2504010; lib: 3.9.3)

有没有什么好办法?

2026-01-12 17:52 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。

在uni-app-x开发的小程序中实现富文本点击监听,有以下几种可行方案:

  1. rich-text组件正确使用
    uni-app-x的rich-text组件在小程序平台确实支持@itemclick事件(注意是小写,非@itemClick)。参考rich-text示例代码,正确写法应为:

    <rich-text :nodes="htmlContent" @itemclick="handleItemClick"></rich-text>  

    在script中处理事件:

    function handleItemClick(event: any) {  
     console.log('点击了富文本元素', event.detail.href)  
     // 处理点击逻辑  
    }  
  2. web-view替代方案
    web-view的loadData方法在小程序平台是支持的(需HBuilderX 4.81+)。正确用法:

    <web-view ref="webview" @message="handleMessage"></web-view>  
    const webview = uni.createWebviewContext('webview')  
    webview.loadData({  
     html: '<div onclick="plus.webview.postMessage(\'click\')">点击区域</div>',  
     baseUrl: ''  
    })  
    
    function handleMessage(e) {  
     if(e.detail.data[0] === 'click') {  
       console.log('捕获到点击事件')  
     }  
    }  
  3. 推荐插件方案
    由于小程序平台对rich-text事件支持有限,建议使用插件市场的专业富文本解析插件:

这些插件通过自定义组件方式实现,能更好地处理各平台兼容性问题,比直接使用rich-text更可靠。安装后按文档使用即可实现富文本点击监听功能。

内容为 AI 生成,仅供参考

要回复问题请先登录注册