0

当使用Google FastButton的MrMaksimize 和 Alex Blacks 实现时,我在 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>
  • 放大结果窗格
  • 单击绿色按钮,显示警报
  • 按确定,一切看起来都很好
  • 然后单击没有 FastButton(..) 的红色或蓝色 div
  • 它再次触发警报:(

我在带有 iOS 5.1 的 iPhone 4S iOS 6 和 iPad 3 上遇到了这种错误行为。

在android上它似乎工作。

我得到与jquery.tappable.js相同的奇怪行为。

谢谢!

4

2 回答 2

0

我在这里也有类似的问题。

我能够通过使用解决方案来修复它:

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;
    }
});

祝你好运!

于 2013-02-05T00:25:38.363 回答
0

我认为 FastButton 实现已经阻止了 Ghostclick(几毫秒的超时)。

我遇到了同样的问题,因为我认为问题可能在于您正在使用和提醒(就像我一样)。由于某种原因(我没有深入研究代码),您会因为警报而触发另一个事件。如果您只是尝试代码,请使用非阻塞的“console.log”而不是警报,您可能会看到第二个事件没有被调用。

希望这个想法不是使用 alert 命令,但如果是,请在超时后使用它,这可以解决 ghostclick 的实现,我认为这无论如何都会破坏行为:

new FastButton(document.getElementById('a'), function() { 
       setTimeout('alert("hello");',500);
});

希望能帮助到你。

干杯,米格尔

于 2013-03-20T21:46:03.783 回答