IE9提交时间CSS重绘

我们有一个动画的微调器gif,用于在用户提交表单后为提交按钮增添趣味。 如果所有validation都在表单上传递,我们通过jQuery的css()方法分配背景,将背景图像,定位和颜色设置为一体。

IE9没有在提交时显示背景图像,尽管在其他浏览器中仍然可以看到它。

这种技术在之前的IE浏览器中运行良好,但在IE9中似乎已经破解,包括旧的“浏览器模式”。 我不确定这是否是IE9中的一个错误,但它确实改变了行为,我不能相信IE7 / 8模式因为这个原因而按预期运行。

似乎IE可能决定在用户​​提交表单后不再进行重新绘制。 如果是这种情况,我不确定我是否已经解决了这个问题,但我想我认为情况并非如此。 我们在Firefox中遇到了此技术的先前问题,我们发现Firefox除了表单请求本身之外还停止所有http请求,这意味着如果背景图像不在缓存中,它将无法工作。 因此,我们已经在内存中的Image对象上预加载微调器。

有趣的是,如果我从IE开发工具控制台手动调用更新按钮上的CSS的方法,它就可以正常工作。 只有当我们有一个实际的提交时它才会被顽固并且无法在微调器中绘制。 同样有趣的是,它确实从提交按钮删除了文本,这是效果的第二部分。

任何人有什么想法导致这个/如何预防它?

这是一个处理提交的live() d代码的精简版本:

 jQuery.fn.disableSubmit = function() { this.find("input[type=submit]").each(function() { $(this).css({"background": "url(/asdasdasd.gif) no-repeat 50% 50%"}); }); return this; }; $("form").live("submit", function() { var form = $(this); form.disableSubmit(); return true; }); 

我在ExtJS上遇到了类似的问题,并且在提交表单后发现了你发现IE9没有加载任何新图像的确切内容。

这是我的解决方法,不需要预加载,但不可否认它有点hackish。

 function() { Ext.MessageBox.wait('Searching for tenants eligible for rent increase...', 'Searching'); setTimeout(function() { document.getElementById('rental_increase_form').submit(); }, 200); return false; } 

基本上我在表单提交事件触发时返回false,我执行所有CSS加载,然后在超过200毫秒后通过Javascript手动提交表单。

我希望有所帮助。 你有没有向微软提交错误?