[英]Firefox event firing issue
我在标记中有一个带有连接的事件侦听器的列表,每个li包含一个或两个div,其想法是根据单击的div做一些事情。 HTML示例:
<ul id="list">
<li><div class="first a"></div><div class="second b c"></div></li>
<li><div class="first f"></div></li>
<li><div class="first e"></div><div class="second d r"></div></li>
…
JS示例:
var currentLang = 'en';
var failCounter = 0;
var currentArg = args[Math.floor(Math.random() * args.length)];
var previousArgs = [];
function keyClicked(event) {
if (event.target.className.split(' ').indexOf(currentArg) > -1) {
textBox.style.opacity = 0;
setTimeout(function () {
textBox.innerHTML = wonMessages[currentLang];
textBox.style.opacity = 1;
wrapper.className = 'alert alert-success wrapper-active';
}, 250);
wrapper.onclick = function () { location.href = "…" };
list.removeEventListener('click', keyClicked);
}
else {
if (failCounter < 1) {
failCounter++;
previousArgs.push(currentArg);
do { currentArg = args[Math.floor(Math.random() * args.length)]; }
while (previousArgs.indexOf(currentArg) > -1);
textBox.style.opacity = 0;
setTimeout(function () {
textBox.innerHTML = wrongMessages[currentLang];
textBox.style.opacity = 1;
wrapper.className = 'alert alert-warning';
}, 250);
}
else {
textBox.style.opacity = 0;
setTimeout(function () {
textBox.innerHTML = lostMessages[currentLang];
textBox.style.opacity = 1;
wrapper.className = 'alert alert-danger';
}, 250);
list.removeEventListener('click', keyClicked);
}
}
}
list.addEventListener('click', keyClicked);
问题是,虽然它在IE和Chrome浏览器的罚款,火狐出于某种原因不类的一个div时触发一个事件first
(第一个或唯一一个li
,如果li
点击只包含一个DIV)。 Firefox仅识别对class second
div的点击。 有什么想法,为什么? 这些浏览器之间有什么不同导致?
如果这可能对某人有帮助-我已经找到了解决方案。 问题在于CSS。 应触发事件的Divs在:active状态下具有负的z-index设置。 事实证明,由于某些原因,firefox拒绝为z索引为负的元素触发事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.