当使用MrMaksimize和Alex Blacks的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>
- 放大结果窗格
- 点击绿色按钮,显示一个警告
- 按ok,一切正常
- 然后单击红色或蓝色div,其中没有快速按钮(..)
- 它再次触发警报:(
我在iPhone 4S、iOS 6和iPad 3 (iOS 5.1)上看到这个错误的行为。
在android上似乎可以工作。
我在jquery.tappable.js中得到了同样奇怪的行为。
谢谢!
我这里也有类似的问题。
我可以通过使用这个解决方案来修复它:
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;
}
});
祝你好运! 我认为FastButton的实现已经防止了Ghostclick(几毫秒的超时)。
我也有同样的问题,因为我认为问题可能在于你正在使用and alert(就像我一样)。由于某种原因(我没有深入研究代码),您会因为警报而触发另一个事件。如果您只是尝试代码,使用"console.log",它是非阻塞的,而不是alert,您可能会看到第二个事件没有被调用。
希望这个想法是不使用警报命令,但如果它是,使用它与超时,这工作围绕ghostclick的实现,这是我认为是打破行为无论如何:
new FastButton(document.getElementById('a'), function() {
setTimeout('alert("hello");',500);
});
希望有帮助。
欢呼,米格尔