Javascript IE 9中的停止事件(未升级到Prototype 1.7)

Javascript IE 9中的停止事件(未升级到Prototype 1.7),javascript,internet-explorer,internet-explorer-9,prototypejs,Javascript,Internet Explorer,Internet Explorer 9,Prototypejs,我正在工作的站点使用原型1.6.1。它的Event.stop()在IE9中不起作用。我知道Prototype 1.7解决了这个问题。然而,如果我不能升级到Prototype 1.7,是否有一个变通的办法 我需要该网站与IE 7、8和9(以及Chrome、Firefox等)兼容 谢谢 编辑:我尝试了event.preventDefault(),但在IE 9中它对我不起作用。以下是一个例子: 它在jsfiddle/Chrome/Firefox中工作。如果您将代码粘贴到HTML文件并用IE9打开它,它

我正在工作的站点使用原型1.6.1。它的Event.stop()在IE9中不起作用。我知道Prototype 1.7解决了这个问题。然而,如果我不能升级到Prototype 1.7,是否有一个变通的办法

我需要该网站与IE 7、8和9(以及Chrome、Firefox等)兼容

谢谢

编辑:我尝试了
event.preventDefault()
,但在IE 9中它对我不起作用。以下是一个例子: 它在jsfiddle/Chrome/Firefox中工作。如果您将代码粘贴到HTML文件并用IE9打开它,它将无法工作


EDIT2:我刚刚发现Prototype 1.6.1在IE中添加了自己的
preventDefault()
方法,但在IE 9上不起作用。然而,IE9自带了自己的
preventDefault()
,它实际上可以工作。因此,如果我坚持原型1.6.1,我想我无法让
preventDefault()
在IE 9上工作

似乎内部原型确实扩展了,这在IE9下破坏了东西。如果不升级,最简单的方法就是在头标签的顶端(但在字符集标签的下方)添加一个与x-ua兼容的元标签,以迫使IE9变成小于9的IE

function stopDefAction(evt) {
     evt = evt || event;
     if (evt.preventDefault) {
          evt.preventDefault();
     }
     else {
          evt.returnValue = false;
     }
}
如果您有能力,也可以尝试直接修补原型:
这是为1.6.0编写的,但我认为它应该适用于1.6.1。我也有同样的问题,可能会尝试一下,看看会发生什么。

你可以比较1.7和1.6.1 Event.stop()代码,看看IE9的修复程序是什么,然后在你的版本中复制。@Marc B我进入了Prototype 1.7的
Event.stop()
方法。它似乎只调用了
event.preventDefault()
event.stopPropagation()
。此外,这两种方法不是原型的一部分。但是,如果我用Prototype 1.6.1显式地调用它们,事件仍然不会停止。我肯定我错过了什么,但我没发现是什么。谢谢@garthcn:原型覆盖了IE中的那些方法。也许这就是问题所在?对我来说不起作用。这似乎只是preventDefault的内部实现正在做的事情,所以。。。有点多余。我能找到的唯一办法就是使用不同的图书馆。我们目前正在迁移到jQuery,所以我们在noConflict模式下运行它,我能够将submit处理程序与之连接起来,并让submit处理程序代码的其余部分按原样运行