uni-app @touchstart事件参数类型变为globalThis.TouchEvent 但该类型缺少offsetLeft属性
uni-app @touchstart事件参数类型变为globalThis.TouchEvent 但该类型缺少offsetLeft属性
示例代码:
<template>
<canvas
id="percent"
canvas-id="percent"
type="2d"
[@touchstart](/user/touchstart)="showBubble($event)"
@touchend="hideBubble"
/>
</template>
<script setup lang="ts">
async function showBubble(e: globalThis.TouchEvent) {
console.log(e.currentTarget.offsetLeft)
}
</script>
操作步骤:
按下述代码,即可看到编辑器报错
<template>
<canvas
id="percent"
canvas-id="percent"
type="2d"
[@touchstart](/user/touchstart)="showBubble($event)"
@touchend="hideBubble"
/>
</template>
<script setup lang="ts">
async function showBubble(e: globalThis.TouchEvent) {
console.log(e.currentTarget.offsetLeft)
}
</script>
预期结果:
预期就算换成globalThis.TouchEvent,也不应该报Property 'offsetLeft' does not exist on type 'EventTarget'.
实际结果:
实际报错
bug描述:
uniapp现在的[@touchstart](/user/touchstart)事件的参数类型不是TouchEvent,而是变成了globalThis.TouchEvent
但是globalThis.TouchEvent没有currentTarget.offsetTop属性
本来想上传本地图片,但是按照说明‘上传成功后,在编辑器中选择要插入的位置,然后点击附件预览图旁边的“插入”’,点插入没有任何反应。然后想点预览模式看看,结果控制台报错Uncaught TypeError: textarea.getAttribute is not a function。
| 信息项 | 信息内容 |
|---|---|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境 | Windows |
| PC开发环境版本 | Windows 11 专业版 23H2 |
| 第三方开发者工具 | 微信开发者工具 Stable 1.06.2401020 |
| 基础库版本 | 2.32.2 |
| 项目创建方式 | CLI |
| CLI版本 | 4.13.2024042321-alpha |
更多关于uni-app @touchstart事件参数类型变为globalThis.TouchEvent 但该类型缺少offsetLeft属性的实战教程也可以访问 https://www.itying.com/category-93-b0.html
好吧上传后看到有图片了,但是编辑的时候点插入图片,没有看到有插入图片的markdown,之前是有的
那我在这再补个使用globalThis.TouchEvent类型后,报错的图片
更多关于uni-app @touchstart事件参数类型变为globalThis.TouchEvent 但该类型缺少offsetLeft属性的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中,@touchstart 事件的参数类型是 globalThis.TouchEvent,而 TouchEvent 类型本身并不包含 offsetLeft 属性。这是因为 TouchEvent 是标准 DOM 事件,而 offsetLeft 是 HTMLElement 的属性,用于获取元素相对于其 offsetParent 元素的左边缘的距离。
如果你需要获取触摸事件的目标元素的 offsetLeft,你可以通过 event.target 来访问目标元素,然后获取 offsetLeft 属性。以下是一个示例:
<template>
<view @touchstart="handleTouchStart">
Touch me
</view>
</template>
<script>
export default {
methods: {
handleTouchStart(event) {
// 获取触摸事件的目标元素
const targetElement = event.target;
// 获取目标元素的 offsetLeft
const offsetLeft = targetElement.offsetLeft;
console.log('offsetLeft:', offsetLeft);
}
}
}
</script>
注意事项
-
类型断言:在某些情况下,
event.target可能被推断为EventTarget类型,而不是HTMLElement。你可以使用类型断言来明确指定类型:const targetElement = event.target as HTMLElement; const offsetLeft = targetElement.offsetLeft;

