jQuery fadeIn和fadeOut与IE8不兼容



我编写这个脚本是为了淡入/淡出错误容器。它在FF和Chrome中运行良好,但在IE8中根本不起作用。

你可以在这里拉小提琴:http://jsfiddle.net/mostafatalebi/8tw2x/

或者查看以下代码:

这是容器CSS:

.error-box
{
filter:inherit; 
width: auto;
display: inline;
padding: 5px;
border-radius: 5px;
-webki-border-radius: 5px;
-moz-border-radius: 5px;
direction: rtl;
text-align: right;
background-color: #C00;
color: white;
font-size: 13px;
width: 200px;
float: left;
margin-bottom: 5px;
opacity:inherit;
filter:inherit;
}

这是HTML DOM:

<label class="form-label">Email</label><br />
<div class="form-field-holder">
<input id='email' type="text" name="email" class="form-input" />
<div class="error-box"><!-- jQuery --></div><br /> 
</div>

下面是处理这个过程的jQuery代码:

$(document).ready(function(e) {
var email = $("#email");
email.on('blur', function(){
console.log(email_regexp.test(email.val()));
if(!email_regexp.test(email.val()))
{
$(this).siblings('.error-box').fadeIn(600).text("رایانامه شما اشتباه است");                                                         
}   
else
{
$(this).siblings('.error-box').fadeOut(600);    
}
});                                                                                                                                                             
});

关于兼容性和jQuery

jQuery2.x仅用于InternetExplorer9及更高版本。如果您希望在InternetExplorer8中支持淡入淡出元素(最低支持6),则需要使用jQuery1.x,它仍然支持旧的IE筛选器属性。

我已经确认切换到jQuery1.x解决了这个问题。没有其他必要,尽管在过去似乎需要额外的解决方案。

在控制台和旧的Internet Explorer上

需要记住的另一件事是,byconsole最初并不存在于IE8中。因此,任何调用console.log的尝试都将导致问题。如果您想使用它,请先预先检查console的可用性。您可以使用&&进行此操作,尽管这被认为是滥用

window.console && console.log( email_regexp.test( email.val() ) );

或者,你可以采取更详细的路线,并使其成为一个适当的条件:

if ( window.console ) { console.log( email_regexp.test( email.val() ) ); }

如果你不想在控制台检查中乱丢代码,只需定义自己的:

if ( !window.console ) {
// When debug is true, console.log alerts
var debug = true;
window.console = {
log: function ( message ) {
if ( debug ) alert( message );
}
};
}

进一步阅读:jQuery浏览器支持

取自jQuery fadeIn fadeOut-IE8不褪色

取自Omeriko:"显然有个变通办法!

只需将绝对/相对定位的元素设置为以下css属性:

opacity:inherit;
filter:inherit;

例如:

<div>
<img id='myImg' src='http://mydomain.com' style='position:absolute;top:10px;left:5px;filter:inherit;opacity:inherit' />
</div>

玩得开心,

Omer’

您需要为IE创建一个手动的fadeIn-fadeOut函数,该函数将删除filter属性。然后它就会完美地工作。

如何做到这一点的好教程:

http://www.epochdev.com/blog/tutorials/javascript_development/fixing_jquery_fade_in_and_out_functions_for_internet_explorer

在IE8中似乎不太支持淡入淡出。尽管它在其他更高版本的IE上也能正常工作。

最新更新