2014-10-03 55 views
0

下面是简单的html文件,它包含一个锚点,由具有特定样式的块元素覆盖。应用样式后,该链接仅在IE9中不可点击。应用的样式是使锚点静音,但允许用户点击,如果需要。通过使用Jquery尝试了不同的选项,但没有解决。在html/css中对此有任何破解?只有在IE9中不能点击锚标记

<!DOCTYPE html> 
<html> 
<head> 
    <title>Trial</title> 
    <style> 
    .overlay { 
     display: block; 
     position: absolute; 
     width: 100%; 
     height: 100%; 
     background-color: rgba(255,255,255,.4); 
     pointer-events: none; 
    }  
    </style> 
</head> 
<body> 
    <div class="overlay"></div> 
    <a href="http://www.google.com" target="_blank">ClickMe</a> 
</body> 
</html> 
+0

'指针的事件:无;'会空出点击(指针)事件在IE9 – 2014-10-03 14:11:45

+0

是否当您删除指针事件性质工作的呢? – Rob 2014-10-03 14:12:21

+0

@EricHolmes错误。 'pointer-events:none' [“指示鼠标事件”通过“元素,并指向该元素下方的任何内容。”](https://developer.mozilla.org/en-US/docs/ Web/CSS /指针事件) – Moob 2014-10-03 14:14:48

回答

0

CSS属性pointer-events不< IE11(参见:http://caniuse.com/#feat=pointer-events)支持

作为变通,你可以使用JavaScript来监听在重叠的点击,然后触发点击在下面的链接,如果它在你的光标下。喜欢的东西:

function simulateClick(el) { 
    var evt = document.createEvent("MouseEvents"); 
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
    el.dispatchEvent(evt); 
}; 
function isOnTopOf(evt, el) { 
    return evt.clientX >= el.offsetLeft && evt.clientX <= el.offsetLeft+el.offsetWidth && evt.clientY >= el.offsetTop && evt.clientY <= el.offsetTop+el.offsetHeight; 
};   

var overlay = document.getElementById("overlay"); 
var clicker = document.getElementById("clicker"); 

overlay.addEventListener('click', function(evt) { 
    if(isOnTopOf(evt, clicker)){ 
     simulateClick(clicker); 
    } 
}, false); 

http://jsfiddle.net/nxdm5x3u/

然而如果这样做,你的整个原因是为了使链接出现“静音”你可以只使用CSS,使其半透明,不与理会覆盖:用

a.muted { 
    opacity: 0.5; 
    filter: alpha(opacity=50); 
} 
+0

任何反馈都会反对吗?这不正确吗?它是无效的吗?它不符合OP的要求吗?任何能够帮助我改进我的答案的东西?谢谢。 – Moob 2014-10-03 16:31:47

+0

@Teemu。你好。这是什么CSS技巧?我没有设置背景。我不知道IE做到了。你是否建议叠加层有一个背景:透明并通过其他方式制成半透明?如果是这样,也许你应该把它作为答案。 – Moob 2014-10-03 17:36:24

+0

看起来我混合了代码,删除了评论。 – Teemu 2014-10-03 17:40:36