Google FastButton在iOS上点击两次



当使用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);
});

希望有帮助。

欢呼,米格尔

相关内容

  • 没有找到相关文章

最新更新