2017-02-17 6 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 ")ハンドラが(@ raina77owによって暗示されるように)設定される前に、loadイベントが既に発生している可能性があります。 addClass( "loaded");}); '。(load)'部分を削除します: '$(function { –

答えて

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

関連する問題