收藏
回答

使用webview组件打开外部h5,想和h5通讯但是获取不到webview实例?

组件web-view,在开发工具和真机调试时,使用web-view打开h5,不管是循环10都还是web-view加载后都获取不到web-view实例,单纯接受h5消息也不行。

<web-view id="pdfWebView" src="{{viewerUrl}}" bindmessage="onWebViewMessage"></web-view>

tryGetWebView(retryCount) {

    if (retryCount <= 0) {

      console.error('多次尝试后仍获取不到 web-view 实例,翻页功能将不可用');

      return;

    }

    let webView = this.selectComponent('#pdfWebView');

     

      // 如果没拿到,尝试用选择器兜底

      if (!webView) {

        const webViews = this.selectAllComponents('web-view');

        webView = webViews?.[0];

      }


      if (webView) {

        this.webView = webView;

        console.log('✅ web-view 实例获取成功', webView);

      } else {

        console.error('❌ 仍未获取到 web-view 实例');

        setTimeout(() => {

          this.tryGetWebView(retryCount - 1);

        }, 500);

      }

     

  },

// 接收 H5 回传的 PDF 页码

  onPdfMessage(e) {

    const data = e.detail.data[e.detail.data.length - 1];

    if (data.type === 'pdfPageUpdate') {

      this.setData({

        currentPage: data.currentPage,

        totalPages: data.totalPages

      });

    }

  },



回答关注问题邀请回答
收藏

3 个回答

  • Mr.Zhao
    Mr.Zhao
    04-30

    这是AI自己发明的写法,你也拿来用

    04-30
    有用
    回复
  • 一
    04-30

    onPdfMessage

    你这个方法拿来干嘛的?

    04-30
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    04-30
    有用
登录 后发表内容