【问题标题】:Disable a link in IE9 - prototype stop() not working禁用 IE9 中的链接 - 原型 stop() 不起作用
【发布时间】:2010-10-12 21:38:12
【问题描述】:

IE9 仍处于 Beta 阶段,但都一样,这里有个问题:

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

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

虽然这在我尝试过的所有其他浏览器中都能完美运行,但 IE9 是一个独特的案例。默认事件行为触发,我的链接将我带到链接位置。 stop() 似乎在 IE9 中没有发挥作用。

以下代码在 IE9 中完美运行:

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

知道我可以做些什么来修复用于 IE9 的原型方法吗?

【问题讨论】:

标签: javascript internet-explorer-9 prototypejs dom-events


【解决方案1】:

prototype.js 版本低于 1.7 会进行浏览器嗅探以应用跨浏览器兼容修复。

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

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

【讨论】:

  • 具体来说,旧版本的原型覆盖 preventDefault() 以不再阻止默认​​值。
  • Event.stop() 方法在 IE9 的 1.7rc2 中不起作用。在 1.7 的最终版本中,它可以工作。
【解决方案2】:

通过在<head></head> 中添加以下标签,将文档模式更改为 IE8 标准:

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

【讨论】:

    猜你喜欢
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多