uni-app onShareTimeline 包含<web-view>标签的页面不生效

uni-app onShareTimeline 包含<web-view>标签的页面不生效

开发环境 版本号 项目创建方式
Mac 11.2.2 HBuilderX

操作步骤:

  • 页面位web-view页面时

预期结果:

  • 可以分享朋友圈

实际结果:

  • 不生效,按钮灰色

bug描述:

  • onShareTimeline 包含<web-view>标签的页面不生效,非webview页面可以
4 回复

【咨询问题/bug处理优先级规则】:https://ask.dcloud.net.cn/article/38139

更多关于uni-app onShareTimeline 包含<web-view>标签的页面不生效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


2年了 解决了吗o(╥﹏╥)o

请问解决了嘛

uni-app 中,onShareTimeline 是用于分享到微信朋友圈的 API。如果你在包含 <web-view> 标签的页面中使用 onShareTimeline,可能会遇到分享不生效的问题。这是因为微信对 <web-view> 页面的分享行为有一些限制。

可能的原因

  1. 微信的限制:微信对 <web-view> 页面的分享行为有严格的限制,特别是涉及到跨域或外部链接的内容。
  2. 页面结构问题<web-view> 标签本身可能不支持某些分享功能,或者页面结构导致分享功能无法正常触发。

解决方案

  1. 使用自定义分享内容

    • 你可以在 onShareTimeline 中自定义分享的内容,而不是直接分享 <web-view> 页面的内容。
    • 例如,你可以设置分享的标题、图片和路径等。
    export default {
      onShareTimeline() {
        return {
          title: '自定义分享标题',
          path: '/pages/index/index', // 分享路径
          imageUrl: 'https://example.com/share-image.png' // 分享图片
        };
      }
    };
    
  2. 避免直接分享 <web-view> 页面

    • 如果可能,尽量避免直接分享包含 <web-view> 的页面。你可以创建一个单独的页面用于分享,并在该页面中展示与 <web-view> 相关的内容。
  3. 使用 web-viewsrc 作为分享内容

    • 如果你确实需要分享 <web-view> 页面的内容,可以尝试将 web-viewsrc 作为分享内容的一部分。
    export default {
      data() {
        return {
          webViewUrl: 'https://example.com'
        };
      },
      onShareTimeline() {
        return {
          title: '分享网页',
          path: `/pages/webview/webview?url=${encodeURIComponent(this.webViewUrl)}`,
          imageUrl: 'https://example.com/share-image.png'
        };
      }
    };
    
  4. 检查微信开发者工具中的配置

    • 确保在微信开发者工具中,<web-view> 页面的域名已经配置在 request 合法域名中,并且没有跨域问题。
  5. 使用 uni.share API

    • 如果 onShareTimeline 不生效,你可以尝试使用 uni.share API 来实现分享功能。
    uni.share({
      provider: 'weixin',
      scene: 'timeline',
      type: 0,
      title: '自定义分享标题',
      imageUrl: 'https://example.com/share-image.png',
      success: function (res) {
        console.log('分享成功');
      },
      fail: function (err) {
        console.log('分享失败', err);
      }
    });
回到顶部