jQuery touchend 事件问题阻塞(使用 Cordova)
jQuery touchend event issue blocking (using Cordova)
我在 mousedown 和 mouseup 上使用了一个侦听器,以便在它从一个 canvas 到另一个时做出不同的反应。在网站上,完美。但它必须是移动的,所以为了让它工作,我使用了 touchstart 和 touchend 事件。
它没有按预期工作。
这里有一些代码:
HTML(就是一个左边canvas和右边canvas)
<canvas class="left" style="position: relative; background-color: #FFF; width: 45%; height: 80px;"></canvas><canvas class="right" style="position: relative; background-color: #FFF; width: 45%; height: 80px;"></canvas>
JS
$('canvas').on("touchstart", function(e) { //mousedown for mobile
console.log('CONSOLE: start ' + this.className);
down = this;
});
$('canvas').on("touchend", function(e) { //mouseup for mobile
console.log('CONSOLE: end ' + this.className);
calc(down, this);
});
function calc(press, depress) {
code...
}
我使用 ADB Logcat 进行调试,这是意外行为。
I/chromium(28808): [INFO:CONSOLE(148)] "CONSOLE: Reinitialized", source: file:///android_asset/www/js/share.js (148)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start left", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end left", source: file:///android_asset/www/js/share.js (25)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start left", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end left", source: file:///android_asset/www/js/share.js (25)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start right", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end right", source: file:///android_asset/www/js/share.js (25)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start right", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end right", source: file:///android_asset/www/js/share.js (25)
所以我为此做了什么。
重新初始化只是重置为清洁阶段。
前两行"start left end left"只是在左侧轻敲canvas。
那么,接下来的两行也是"start left end left"。但是在这里,我从左 canvas 滑动到右 canvas,没有得到预期的 "start left end right"。右边也一样。
我还在 Android 5.0 Lollipop Moto G(第 2 代)phone.
上使用 Cordova(用于混合 HTML5 应用程序)
有什么问题?
我通过使用带有 elementFromPoint() 的 touchmove 事件纠正了这个问题
我在 mousedown 和 mouseup 上使用了一个侦听器,以便在它从一个 canvas 到另一个时做出不同的反应。在网站上,完美。但它必须是移动的,所以为了让它工作,我使用了 touchstart 和 touchend 事件。
它没有按预期工作。
这里有一些代码:
HTML(就是一个左边canvas和右边canvas)
<canvas class="left" style="position: relative; background-color: #FFF; width: 45%; height: 80px;"></canvas><canvas class="right" style="position: relative; background-color: #FFF; width: 45%; height: 80px;"></canvas>
JS
$('canvas').on("touchstart", function(e) { //mousedown for mobile
console.log('CONSOLE: start ' + this.className);
down = this;
});
$('canvas').on("touchend", function(e) { //mouseup for mobile
console.log('CONSOLE: end ' + this.className);
calc(down, this);
});
function calc(press, depress) {
code...
}
我使用 ADB Logcat 进行调试,这是意外行为。
I/chromium(28808): [INFO:CONSOLE(148)] "CONSOLE: Reinitialized", source: file:///android_asset/www/js/share.js (148)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start left", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end left", source: file:///android_asset/www/js/share.js (25)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start left", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end left", source: file:///android_asset/www/js/share.js (25)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start right", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end right", source: file:///android_asset/www/js/share.js (25)
I/chromium(28808): [INFO:CONSOLE(21)] "CONSOLE: start right", source: file:///android_asset/www/js/share.js (21)
I/chromium(28808): [INFO:CONSOLE(25)] "CONSOLE: end right", source: file:///android_asset/www/js/share.js (25)
所以我为此做了什么。
重新初始化只是重置为清洁阶段。
前两行"start left end left"只是在左侧轻敲canvas。
那么,接下来的两行也是"start left end left"。但是在这里,我从左 canvas 滑动到右 canvas,没有得到预期的 "start left end right"。右边也一样。
我还在 Android 5.0 Lollipop Moto G(第 2 代)phone.
上使用 Cordova(用于混合 HTML5 应用程序)有什么问题?
我通过使用带有 elementFromPoint() 的 touchmove 事件纠正了这个问题