指针事件:无,过滤,在ie8和任何地方工作,而不是ie9

时间:2011-06-28 13:39:32

标签: css

As I have seen here,过滤器可用于模拟

的跨浏览器版本
pointer-events: none;

然而,这在IE9中不起作用,在IE9中的“模拟IE8”版本中也不起作用。但是,IE8的本机安装可以很好地处理它。是否有任何解决方案使其适用于IE9?

2 个答案:

答案 0 :(得分:9)

你是对的 - 已经从IE9中删除了AlphaImageLoader过滤器。 这样做是为了不与符合标准的方法冲突。在这种情况下,pointer-events: nonenow works in IE9

如果您正在使用条件注释来针对过滤器修复程序定位IE,请将它们更改为仅定位到IE8及以下版本。尝试将<!--[if IE]>更改为<!--[if lte IE 8]>

编辑:我再次遇到此问题,似乎pointer-events: none在IE9中无效(无论如何都不适用于HTML元素)。我认为这是有效的,但在重新测试时,这两种方法都不适用于IE9上的点击。也许我的IE9处于兼容模式。

它根本不理想,但你可以通过<meta>标签开关强制IE9进入IE8模式:

 <!--[if ie 9]><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"><![endif]-->

对错误信息道歉,我会继续研究。

2012年9月24日更新:

非常有用的caniuse.com包含有关HTML的pointer-events的更多信息。 IE10中的支持仍然未知,Opera似乎也不支持此属性。我建议现在不要使用pointer-events,除非你专门针对Webkit / Mozilla。

答案 1 :(得分:1)

指针事件仅适用于webkit,hz中的mozilla浏览器。

但是,指针事件适用于Internet Explorer中的svg元素。

有一个很好的modernizr插件https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.min.js来测试指针事件的存在

如果你使用指针事件只是在顶部添加某种纹理,你可以用svg元素替换div

if( !Modernizr.pointerevents )
{
    $('#texture').replaceWith('<svg id="texture"/>');
}