问题解决了......
仅供参考:显然 是 Mac OS或Chromium引擎错误,因为在上一次系统和浏览器更新问题突然消失之后。看起来 与jQuery或JavaScript API无关。
我会将此问题保留几天,之后我会将其删除,因为在这种情况下它不符合StackOverflow规则。
原帖:
我在点击监听器中有简单的JS确认,就像下面的代码一样,没有更多的请求(即AJAX,没有重复的JS包括等等......)。
问题是在某些浏览器(即Mac OS中的Chrome和Opera)中确认对话框已经两次,我的问题是,我是否错过了一些明显的或者是上述浏览器的相当大的错误?是否有任何解决方法可以帮助我防止这种情况发生?也尝试了e.preventDefault();
也没有运气。
修改我还应该提一下,如果点击中没有confirm('...');
,它只会被解雇一次(所以只有一个让我们在控制台中检查...... )。确认两个日志在控制台中出现两次,但布尔值与点击相反 - 对于样本 - 如果我先点击Cancel
,再点击OK
控制台日志true
首先和最后false
......非常奇怪:S
版本:
示例代码(完整):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test...</title>
<script src="http://code.jquery.com/jquery-1.12.0.min.js"></script>
</head>
<body>
<div class="myBtn" data-field="one">Take one</div>
<div class="myBtn" data-field="two">Take two</div>
<div class="myBtn" data-field="three">Take three</div>
<div class="myBtn" data-field="four">Take four</div>
<script>
$(document).ready(function () {
$(document).on('click', '.myBtn', function () {
console.log('Let us check...');
var confirmation = confirm('Are you sure you want ' + $(this).data('field') + '?');
console.log(confirmation);
});
});
</script>
</body>
</html>
或者只需点击此处:https://jsfiddle.net/gu58wwtg/1/
上次修改:刚刚检查了其他可能性,例如裸方法(使用纯JS,没有jQuery)以及prompt('...');
(也按逆序打开两次)而不是{{1}问题仍然存在,所以我怀疑是一个错误,抱歉,打扰你,感谢你的关注。我会保留这个问题,所以其他人可以节省一些挫折时间;)
答案 0 :(得分:0)
我认为你应该使用.one
$(document).one('click', '.myBtn', function () {
说明:
.one()
将处理程序附加到元素的事件。每个事件类型的每个元素最多执行一次处理程序。
答案 1 :(得分:0)
尝试在Chrome设置中清除缓存以及文件历史记录然后关闭浏览器。 然后再试一次。
我使用与您类似的代码并且它有效!
UINavigationBar
它会发射一个!这是铬。我不确定这是一个错误。这可能是chrome存储它的方式。 但是我没有在Mac上使用Opera(因为,我没有Mac)