我正在开发一个带有大量 AJAX 的大型 Web 应用程序,其事件处理已经失控。我正在尝试建立一个事件委托系统来管理所有这些,但我想知道是否有针对 IE 的非冒泡表单提交的解决方法(有很多通过 AJAX 插入/更新的表单)。我想出的最好的事情是每次我从 AJAX 调用得到响应时执行一些 javascript 来重新加载提交处理程序,但这看起来很难看。有任何想法吗?
此外,是否有人对哪些事件在不同版本的 IE 中没有正确传播有很好的参考?我很难找到好的信息(尽管这个其他问题有点)。
该站点的一个真实示例:对某些用户内容进行了就地编辑。进行事件委托时,我会让主体监听提交事件,然后查看是什么元素触发了事件并相应地处理它。由于提交不会在 IE 中冒泡,因此这是行不通的。5 美元的解决方案是对所有其他事件进行事件委托,并在 Prototype 中使用类似这样的东西处理提交:
// call this onload:
$$('form').invoke('observe', 'submit', function(event) { /*delegate*/ });
但这不适用于动态创建的表单(如上所述,我每次都必须重新实例化处理程序),如果我可以在 IE 中“制作”表单提交气泡和只需在任何地方进行简单的委托(没有特殊情况等)。