渐变过滤器可防止 IE9 DIV 中没有文本的点击事件

Gradient Filter prevents click event in an IE9 DIV where there is no text

我讨厌挖掘 IE9 问题,但令人惊讶的是我还没有看到 post 这方面的问题。

如果 div 设置了渐变 filter,则 click 事件不再适用于 div 的 "empty" 区域。如果 div 包含文本,click 事件将仅对文本有效。

有什么办法可以克服这个问题吗?

我写了一个渐变生成器,希望它与 ie9 兼容。所以解决方案需要特定于使用 filter 而不是用其他东西替换它。

当然,下面的示例片段需要在 IE9 仿真模式下 运行 才能看到问题。

var test1 = document.getElementById("test1");
test1.style.filter = "progid:DXImageTransform.Microsoft.gradient( startColorstr='#327796', endColorstr='#ffffff',GradientType=0)";
test1.addEventListener("click", function() {
  console.log("addEventListener clicked 1")
});

var test2 = document.getElementById("test2");
test2.style.filter = "progid:DXImageTransform.Microsoft.gradient( startColorstr='#327796', endColorstr='#ffffff',GradientType=0)";
test2.addEventListener("click", function() {
  console.log("addEventListener clicked 2")
});

var test3 = document.getElementById("test3");
test3.addEventListener("click", function() {
  console.log("addEventListener clicked 3")
});
.div {
  width: 70px;
  height: 70px;
  border: 1px solid black;
}
<div class="div" id="test1"></div>
<div class="div" id="test2">Some<br>Text</div>
<div class="div" id="test3"></div>

好的 - 最简单的解决方案似乎是插入高度和宽度等于 100% 的 child div。这会毫不费力地将事件传递到 parent div。