我使用mousedown和mouseup事件来识别长按。但这对我来说不适用于Tizen模拟器。但是相同的代码在浏览器中运行良好。 Tizen提供的Tau仅支持滑动。
以下代码在浏览器中运行良好:
r.Value = r.Value

var timeOut;
$("button").mouseup(function(event){
clearTimeout(timeOut);
});
$("button").mousedown(function(event){
timeOut = setTimeout(function(){
alert('you hold your mouse more than 2 seconds.!');
},2000);
});

但是在tizen可穿戴模拟器中没有任何作用。所以我可以尝试任何其他建议吗?
答案 0 :(得分:2)
您可以使用' touchstart'和' touchend'而不是' mousedown'和' mouseup'。
我现在使用基本Web模板测试下面的代码。它运作良好! :)
main.js
window.onload = function() {
// TODO:: Do your initialization job
// add eventListener for tizenhwkey
document.addEventListener('tizenhwkey', function(e) {
if (e.keyName === "back") {
try {
tizen.application.getCurrentApplication().exit();
} catch (ignore) {}
}
});
// Sample code
var mainPage = document.querySelector('#main');
var timeOut;
var cnt = 0;
mainPage.addEventListener("touchend", function() {
var contentText = document.querySelector('#content-text');
console.log("timer clear!");
clearTimeout(timeOut);
});
mainPage.addEventListener("touchstart", function() {
var contentText = document.querySelector('#content-text');
console.log("touchstart!");
timeOut = setTimeout(function(){
console.log("long!");
contentText.innerHTML = "Long!" + cnt;
cnt++;
},2000);
});
};
答案 1 :(得分:0)
接受的答案会导致长按事件在其他一些情况下触发,例如当用户实际滚动视图足够长的时间时。此外,任何常规处理程序(如常规点击)仍会在长按时触发。此版本修复了这些问题。此外,它还会为长按产生通常的反馈(触觉和音频,如设备设置中所配置)。
var longpressTimer;
var wasLongpress = false;
function endLongpress(e) {
if (wasLongpress) {
// Prevent default handling, like taps
e.preventDefault();
wasLongpress = false;
} else if (longpressTimer) {
clearTimeout(longpressTimer);
longpressTimer = null;
}
}
// Could target any other element, like a specific control.
var target = document.getElementById('body');
// Any of these should cancel a long-press, or be canceled if the last touch was the start of a long-press
target.addEventListener("touchcancel", function(e) {
endLongpress(e);
});
target.addEventListener("touchmove", function(e) {
endLongpress(e);
});
target.addEventListener("touchend", function(e) {
endLongpress(e);
});
target.addEventListener("touchstart", function(e) {
longpressTimer = setTimeout(function() {
longpressTimer = null;
e.preventDefault();
// So that we know we should prevent default handling
wasLongpress = true;
try {
tizen.feedback.play('HOLD');
} catch (err) {
//unable to play feedback
}
// handle long-press from here
console.log("long!");
}, 500);
});