Skip to content

Commit f9bd8a8

Browse files
author
zhe-he
committed
Issue zhaohaodang#3 优化聊天中上滑发送语音
1 parent 1711d90 commit f9bd8a8

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

src/components/wechat/dialogue.vue

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,14 @@
9393
},
9494
directives: {
9595
press: {
96-
bind(element, binding) {
97-
// var recording = document.querySelector('.recording'),
98-
// recordingVoice = document.querySelector('.recording-voice'),
99-
// recordingCancel = document.querySelector('.recording-cancel'),
100-
var startTx, startTy
96+
inserted(element, binding) {
97+
var recording = document.querySelector('.recording'),
98+
recordingVoice = document.querySelector('.recording-voice'),
99+
recordingCancel = document.querySelector('.recording-cancel'),
100+
startTx, startTy;
101+
101102
element.addEventListener('touchstart', function(e) {
102-
// 为什么每次注册监听器,都要重新获取一次 DOM 像上面写就 undefine?
103-
var recording = document.querySelector('.recording'),
104-
recordingVoice = document.querySelector('.recording-voice')
103+
// 用bind时,vue还没插入到dom,故dom获取为 undefine,用 inserted 代替 bind,也可以开个0秒的定时器
105104
element.className = "chat-say say-active"
106105
recording.style.display = recordingVoice.style.display = "block"
107106
// console.log('start')
@@ -111,31 +110,34 @@
111110
e.preventDefault()
112111
}, false)
113112
element.addEventListener('touchend', function(e) {
114-
var recording = document.querySelector('.recording'),
115-
recordingVoice = document.querySelector('.recording-voice'),
116-
recordingCancel = document.querySelector('.recording-cancel')
113+
/*var touches = e.changedTouches[0];
114+
var distanceY = startTy - touches.clientY;
115+
if (distanceY > 50) {
116+
console.log("取消发送信息");
117+
}else{
118+
console.log("发送信息");
119+
}*/
120+
117121
element.className = "chat-say"
118122
recordingCancel.style.display = recording.style.display = recordingVoice.style.display = "none"
119123
// console.log('end')
120124
e.preventDefault()
121125
}, false)
122126
element.addEventListener('touchmove', function(e) {
123-
var recording = document.querySelector('.recording'),
124-
recordingVoice = document.querySelector('.recording-voice'),
125-
recordingCancel = document.querySelector('.recording-cancel')
126127
var touches = e.changedTouches[0],
127128
endTx = touches.clientX,
128129
endTy = touches.clientY,
129130
distanceX = startTx - endTx,
130131
distanceY = startTy - endTy;
131-
if (distanceY > 10 && distanceY < 80) {
132-
// 控制范围 和谐掉指尖抖动
132+
133+
if (distanceY > 50) {
133134
element.className = "chat-say"
134135
recordingVoice.style.display = "none"
135136
recordingCancel.style.display = "block"
136-
} else if (distanceY > 80) {
137-
element.className = "chat-say"
138-
recording.style.display = recordingCancel.style.display = "none"
137+
}else{
138+
element.className = "chat-say say-active"
139+
recordingVoice.style.display = "block"
140+
recordingCancel.style.display = "none"
139141
}
140142
// 阻断事件冒泡 防止页面被一同向上滑动
141143
e.preventDefault()

0 commit comments

Comments
 (0)