2017-02-17 43 views
0

我无法在IE(11)中使用此代码,我在这里做错了什么? 我需要设置TimeOut吗?加载窗口中的jQuery addClass在IE中不工作

jQuery(document).ready(function($) { 
 
\t // Smooth load body content 
 
\t $(window).on('load',function() { 
 
\t \t \t $('body').addClass('loaded'); 
 
\t }); 
 
});
body { 
 
    opacity: 0; 
 
    color: black; 
 
    background-color: white; 
 
    -webkit-transition: all 2s ease; /* Safari */ 
 
    transition: all 2s ease; 
 
} 
 
body.loaded { 
 
    opacity: 1; 
 
}
<html> 
 
<body> 
 
    <h1>test</h1> 
 
    <img src="http://placehold.it/400x400"> 
 
    
 
    <script type="text/javascript" language="Javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
</body> 
 
</html>

+0

为什么的document.ready处理包裹的window.onload? – raina77ow

+0

在配置'.on(“load”)'处理程序之前,load事件可能已经被触发了(如@ raina77ow所暗示的那样)。删除'.on(load)'部分:'$(function(){$(“body”)。addClass(“loaded”);});' –

回答

1

您可以添加一个事件侦听器,然后应该跨浏览器。 (经过测试的IE11和Chrome)。

if(document.readyState === 'complete') { 
    loadPage(); 
} else { 
    document.addEventListener('readystatechange', function(){ 
     if(document.readyState === 'complete') 
      loadPage(); 
      } 
    )}; 

function loadPage(){ 
    $('body').addClass('loaded'); 
} 

JsFiddle demo