在IE 9中停止事件(不升级到Prototype 1.7)

时间:2011-11-28 05:20:07

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

我正在使用的网站使用Prototype 1.6.1。它的Event.stop()在IE9中不起作用。我知道Prototype 1.7解决了这个问题。但是,如果我无法升级到Prototype 1.7,是否有一个转发?

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

谢谢!

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

EDIT2:我刚刚发现Prototype 1.6.1将自己的preventDefault()方法添加到IE中,但这种方法在IE 9上不起作用。但是,IE 9自带的preventDefault()实际上有效。所以,如果我坚持使用Prototype 1.6.1,我想我无法让preventDefault()在IE 9上工作。

2 个答案:

答案 0 :(得分:2)

function stopDefAction(evt) {
     evt = evt || event;
     if (evt.preventDefault) {
          evt.preventDefault();
     }
     else {
          evt.returnValue = false;
     }
}

答案 1 :(得分:0)

似乎内部Prototype确实扩展了,在IE9下 - 破坏了一些东西。如果没有升级, easy 就会在你的head标签的顶部(但在charset标签下面)添加一个与x-ua兼容的元标记,以强制IE9小于9。

如果你有能力,你也可以尝试直接修补Prototype: http://mandagreen.com/prototype-1-6-event-stop-ie9-quick-patch/ 这是为1.6.0编写的,但我认为它适用于1.6.1。我有同样的问题,可能会尝试看看会发生什么。