|
93 | 93 | },
|
94 | 94 | directives: {
|
95 | 95 | 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 | + |
101 | 102 | 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秒的定时器 |
105 | 104 | element.className = "chat-say say-active"
|
106 | 105 | recording.style.display = recordingVoice.style.display = "block"
|
107 | 106 | // console.log('start')
|
|
111 | 110 | e.preventDefault()
|
112 | 111 | }, false)
|
113 | 112 | 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 | +
|
117 | 121 | element.className = "chat-say"
|
118 | 122 | recordingCancel.style.display = recording.style.display = recordingVoice.style.display = "none"
|
119 | 123 | // console.log('end')
|
120 | 124 | e.preventDefault()
|
121 | 125 | }, false)
|
122 | 126 | element.addEventListener('touchmove', function(e) {
|
123 |
| - var recording = document.querySelector('.recording'), |
124 |
| - recordingVoice = document.querySelector('.recording-voice'), |
125 |
| - recordingCancel = document.querySelector('.recording-cancel') |
126 | 127 | var touches = e.changedTouches[0],
|
127 | 128 | endTx = touches.clientX,
|
128 | 129 | endTy = touches.clientY,
|
129 | 130 | distanceX = startTx - endTx,
|
130 | 131 | distanceY = startTy - endTy;
|
131 |
| - if (distanceY > 10 && distanceY < 80) { |
132 |
| - // 控制范围 和谐掉指尖抖动 |
| 132 | +
|
| 133 | + if (distanceY > 50) { |
133 | 134 | element.className = "chat-say"
|
134 | 135 | recordingVoice.style.display = "none"
|
135 | 136 | 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" |
139 | 141 | }
|
140 | 142 | // 阻断事件冒泡 防止页面被一同向上滑动
|
141 | 143 | e.preventDefault()
|
|
0 commit comments