禁用IE9中的链接-原型stop()无效

9

虽然IE9仍处于测试阶段,但是我们仍有一个问题:

使用prototype.js 1.6.1,为链接添加点击事件并覆盖默认链接行为的正确方式应该是:

mylink.observe('click', function(e){
   doSomething();
   e.stop();
});

虽然这段代码在其他浏览器中都能正常运行,但IE9是个例外。默认事件会触发并将链接带到对应的位置。似乎stop()在IE9中无法正常工作。

以下代码可以在IE9中正常工作:

mylink.onclick = function(){
   doSomething();
   return false;
}

有什么办法可以修复原型方法,使其在IE9中可用?

你为什么还在使用IE9 beta版本进行开发呢? - meder omuraliev
1
只是想为我的网站做好未来的准备。我认为Prototype 1.7将会缓解这个问题,因为他们一直在努力适应IE9(http://www.prototypejs.org/2010/10/12/prototype-1-7-rc3-support-for-ie9)。 - Gromeen
2个回答

9

prototype.js版本低于1.7时,使用浏览器嗅探来应用跨浏览器兼容修复。

prototype.js会用它的实现覆盖本地方法,在IE 9中失败;即使它支持DOM Level 2事件。

较新版本的prototype.js没有这个问题,因为它使用“功能检测”而不是“浏览器嗅探”。


1
具体来说,旧版本的原型覆盖了preventDefault()方法,以至于默认行为不再被阻止。 - EricLaw
Event.stop() 方法在 IE9 上的 1.7rc2 版本中无法正常工作,但在最终发布的 1.7 版本中可以正常使用。 - Jakob Egger

1

将以下标签放置在<head></head>中,将文档模式更改为IE8标准:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接