uni-app小程序-h5内嵌web-view中echarts图表无法拖动

uni-app小程序-h5内嵌web-view中echarts图表无法拖动

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC开发环境版本 os15
HBuilderX类型 正式
HBuilderX版本 4.01
手机系统 Android
手机系统版本 Android 14
手机厂商 小米
手机机型 10s
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

示例代码:

<code>window.wx = {}</code><br>
在main.js中已经加入这个了, 无用

操作步骤:

预期结果:

实际结果:

bug描述:

微信小程序中, echarts图表无法拖动, 渲染的地图, 也无法点击, 开发模式是h5, 用web-view嵌入的。


更多关于uni-app小程序-h5内嵌web-view中echarts图表无法拖动的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

经验证,微信小程序原生语法webview引入一个echart官方示例在开发者工具上图表也是不能拖到的,但是在真机上是好使的

更多关于uni-app小程序-h5内嵌web-view中echarts图表无法拖动的实战教程也可以访问 https://www.itying.com/category-93-b0.html


解决了吗?求解决方案

在 uni-app 的小程序或 H5 页面中,使用 web-view 嵌入的 ECharts 图表无法拖动,可能是由于 web-view 的默认行为或 ECharts 的配置问题导致的。以下是一些可能的解决方案:

1. 检查 ECharts 的配置

确保 ECharts 的配置中没有禁用拖动功能。你可以检查 dataZoomdrag 相关的配置项。例如:

option = {
    // 其他配置项
    dataZoom: [
        {
            type: 'inside', // 内置型数据区域缩放组件
            start: 0,       // 初始数据范围的起始百分比
            end: 100        // 初始数据范围的结束百分比
        },
        {
            type: 'slider', // 滑动条型数据区域缩放组件
            start: 0,       // 初始数据范围的起始百分比
            end: 100        // 初始数据范围的结束百分比
        }
    ],
    // 其他配置项
};

确保 dataZoom 配置正确,允许用户通过拖动来缩放图表。

2. 检查 web-view 的配置

web-view 中,确保页面的滚动和触摸事件没有被禁用。你可以检查 web-viewuser-scalabletouch-action 等属性。

例如,在 HTML 页面中,确保 <meta> 标签没有禁用缩放:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

user-scalable=no 改为 user-scalable=yes,允许用户缩放页面。

3. 处理 web-view 的事件传递

web-view 中,可能由于事件传递问题导致 ECharts 无法接收到拖动事件。你可以尝试在 web-view 的页面中添加以下代码,确保事件能够正确传递:

document.addEventListener('touchmove', function (e) {
    e.preventDefault();
}, { passive: false });

这段代码可以确保 touchmove 事件能够正确传递到 ECharts。

4. 使用原生组件替代 web-view

如果 web-view 的问题无法解决,你可以考虑使用原生组件来替代 web-view。在 uni-app 中,你可以直接使用 canvas 组件来绘制 ECharts 图表,而不需要通过 web-view 嵌入。

例如,在 uni-app 中直接使用 ECharts:

<template>
    <view>
        <canvas canvas-id="chart" style="width: 100%; height: 500px;"></canvas>
    </view>
</template>

<script>
import * as echarts from 'echarts';

export default {
    mounted() {
        const chart = echarts.init(document.getElementById('chart'), null, {
            width: 375,
            height: 500
        });
        chart.setOption({
            // ECharts 配置项
        });
    }
}
</script>
回到顶部