使用MrMaksimize and Alex Blacks implementation的Google FastButton时,我会在iOS中获得两次点击。
试试这个小提琴:http://jsfiddle.net/Cotten/zQsVZ/
var a = new FastButton(document.getElementById('a'), function() {
alert('click');
});
<div id="a">First click me</div>
<div id="b">Then, click here and nothing should happen... but it does :(</div>
我在iPhone 4S iOS 6和带有iOS 5.1的iPad 3上出现这种错误行为。
在Android上它似乎有效。
我在jquery.tappable.js时遇到了同样奇怪的行为。
谢谢!
答案 0 :(得分:0)
我遇到类似的问题here。
我可以使用this解决方案修复它:
var clickObject = {
flag: false,
isAlreadyClicked: function () {
var wasClicked = clickObject.flag;
clickObject.flag = true;
setTimeout(function () { clickObject.flag = false; }, 100);
return wasClicked;
}
};
var a = new FastButton(document.getElementById('a'), function() {
if (!clickObject.isAlreadyClicked()) {
alert('click');
} else {
return;
}
});
我不确定它是否适用于您的快捷按钮实现,但它值得一试。我的实现看起来更像是这样:
$('#container').on('click touchstart', 'a.element', function(event) {
if (!clickObject.isAlreadyClicked()) {
alert('click');
} else {
return;
}
});
祝你好运!
答案 1 :(得分:0)
我认为FastButton实现已经阻止了Ghostclick(超时几毫秒)。
我遇到了同样的问题,因为我认为问题可能在于你正在使用和警报(就像我一样)。出于某种原因(我没有深入研究代码),由于警报而导致另一个事件被触发。如果您只是尝试输出代码,请使用“console.log”,它是非阻塞而不是警报,您可能会看到第二个事件未被调用。
希望这个想法不是使用alert命令,但是如果是,请使用超时,这可以解决ghostclick的实现,我认为这无论如何都会破坏这种行为:
new FastButton(document.getElementById('a'), function() {
setTimeout('alert("hello");',500);
});
希望它有所帮助。
干杯, 米格尔