Javascript Internet Explorer 7提交按钮上的onclick事件未触发

Javascript Internet Explorer 7提交按钮上的onclick事件未触发,javascript,internet-explorer-7,Javascript,Internet Explorer 7,我有一个表单,它通过ajax提交到后端,我正在用javascript编写一个通用的禁用函数,可以用来设置元素的onclick。在浏览器中键入此项,以便忽略以下语法错误 function(elementID , processingText) { var element = document.getElementById(elementID); if (element) { element.setAttribute("onClick", "alert('test')

我有一个表单,它通过ajax提交到后端,我正在用javascript编写一个通用的禁用函数,可以用来设置元素的onclick。在浏览器中键入此项,以便忽略以下语法错误

function(elementID , processingText) {
    var element = document.getElementById(elementID);
    if (element) {
        element.setAttribute("onClick", "alert('test')");
    }
}
因此,基本上元素应该有一个onclick事件来设置警报。我可以确认onclick属性设置正确,并在IE8+、Chrome和Firefox中启动。它不会在IE7中开火

我测试的元素是表单(页面上的一个表单)中的提交按钮。它有许多字段和一个提交按钮

EDIT代码会发送一个操作,因此它无论如何都应该提交,但必须在确认警报后才能提交/EDIT

在过去的两个小时里,我一直在用拖网捕鱼,但以下解决方案不起作用,或者是不可行的-

将隐藏的输入字段添加到表单。 将submit按钮包装在标记中,并在此标记中设置onclick。 将onclick的大小写更改为onclick

任何涉及在不使用javascript的情况下修改html的解决方案都不是一个选项,我正在尝试创建一个通用的disableElement函数。我可以将脚本定位在IE7上,这样它就不必在所有浏览器中都工作,只需在IE7上工作


如果您能提供任何帮助,我们将不胜感激。

IE7确实支持setAttribute方法,但似乎无法使用它更改onclick属性。有关此问题的更多信息,请检查:


干杯

IE7有很多兼容性问题,这只是其中之一。如果您编写的javascript需要与IE7兼容,那么您将编写大量冗余代码,以两种不同的方式完成相同的工作,以满足您所支持的不同浏览器的需要

旧浏览器中的此类问题正是像jQuery这样的库存在的原因。jQuery做了很多事情,但有一件事它做得很好,那就是消除了在编写跨浏览器javascript时出现的许多令人讨厌的小怪癖

近年来,跨浏览器问题变得不那么重要,因为现代浏览器(包括IE)有更好的标准支持,但如果您支持旧浏览器,尤其是旧IE版本,我建议使用jQuery(或类似的库),因为它们已经解决了这个问题,还有很多其他的会让你大吃一惊

如果您确实使用jQuery,您的代码将变成:

$(element).click(function() {alert('test');});

在有人指出之前,是的,我知道OP没有在问题中指定jQuery,可能不想要jQuery答案,但在这种情况下,我会说这是可用的最佳答案,因为如果不使用它,最终,您将不得不自己编写与jQuery中已经存在的兼容代码大部分相同的代码。

使用
element.onclick=function(){alert('test');}而不是设置属性?这里最好的答案就是完全放弃对IE7的支持——几乎没有人还在使用它——它的用户群现在已经降至IE6以下。我理解这可能不是你的选择,这取决于你的情况,但如果这是你的决定,我建议你这样做,因为支持IE7很麻烦,而且你几乎不会从中获得任何收益。IE7确实支持
setAttribute
。但是,它不能用于注册事件侦听器。在IE7中,
setAttribute
可以设置
onclick
属性,但仅此而已:它仍然是一个属性,不会被解析并注册为事件侦听器。这在语义上实际上是好的,因为您应该依赖其他方法来添加事件侦听器。比如设置
onclick
属性(或者更好地使用IE6-8中的
attachEvent
)。我试图避免使用JQuery,但它似乎是最好的方法,毕竟JQuery并不是唯一可以使用的库,但是如果您想支持像IE7这样的标准支持较差的旧浏览器,您确实需要类似的东西来规范一些兼容性问题。正如我在其他地方所说,你唯一明智的选择是放弃对IE7的支持;这将使您从这种讨厌的兼容性怪癖中解脱出来,并且更容易证明不使用jquery的合理性。(你仍然会有IE8的问题,但它们比IE7少得多)我很乐意,但现在放弃IE7支持是不可能的。再次感谢