uniapp 如何监听page点击事件
在uniapp中,如何监听整个page页面的点击事件?我想实现点击页面任意位置时触发特定功能,但找不到直接的方法。试过在view上绑定@click,但需要每个区域单独添加,有没有全局监听页面点击的方案?
2 回复
在uni-app中,可以通过@click监听页面点击,但通常用于组件。若需监听整个页面点击,可在最外层view添加@click事件,或使用uni.onWindowResize等全局事件。注意事件冒泡。
在 UniApp 中,监听页面(Page)的点击事件可以通过以下方法实现:
1. 使用 @tap 事件监听
在页面的模板(template)中,为元素绑定 @tap 事件(等同于微信小程序的 bindtap),并在对应的 Page 方法中定义处理函数。
示例代码:
<template>
<view @tap="handlePageTap">点击页面任意位置</view>
</template>
<script>
export default {
methods: {
handlePageTap() {
console.log('页面被点击了');
// 添加自定义逻辑
}
}
}
</script>
2. 监听页面整体点击
若需监听整个页面的点击(例如空白区域),可将事件绑定到根 view 或使用 page 类:
<template>
<view class="page-container" @tap="handlePageTap">
<!-- 页面内容 -->
</view>
</template>
<style>
.page-container {
width: 100vw;
height: 100vh;
}
</style>
3. 注意事项
- 事件冒泡:
@tap会冒泡,若需阻止冒泡可使用@tap.stop。 - 兼容性:
@tap在 UniApp 中全端兼容(H5、小程序、App)。 - 性能:避免在频繁触发的点击事件中执行复杂操作。
适用场景
- 全局手势操作(如单击隐藏浮层)
- 收集用户交互数据
- 动态UI响应(如点击背景关闭弹窗)
根据需求选择合适范围绑定事件即可。

