2011-05-10 89 views
1

我们有一个动画微调gif,我们用它来提炼用户提交表单后提交按钮。如果所有验证都通过了表单,我们通过jQuery的css()方法分配背景,将背景图像,定位和颜色设置为一体。IE9提交时间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; 
}); 
+0

要显示的任何代码?你是否在页面提交被调用之前或之后设置了CSS?您是使用提交按钮的默认行为还是从代码中手动调用submit()? – Rob 2011-05-10 22:12:27

+0

没有代码,尽管我可以在今天晚些时候或明天晚些时候设计一些代码。在发送提交事件之后但在默认行为开始前,CSS会被设置。这是一个实际的提交(通过输入键在一个字段或点击提交按钮)而不是一个程序化的提交调用。 – thynctank 2011-05-11 15:29:03

+0

尝试'<按钮类型=提交>'。它会表现出相同的行为吗? – 2011-05-11 15:47:17

回答

0

我曾与ExtJS的类似的问题,发现你发现有关表单具有后IE9不加载任何新的图像到底是什么已提交。

这是我的解决方法,不需要预加载,虽然承认它有点骇人听闻。

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提交表单。

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