2014-12-06 6 views
0

Я хочу скрыть iframe, пока он не будет загружен, чтобы избежать белого мигания. Это происходит постоянно в Internet Explorer 11 и FireFox. Иногда в Chrome, если страница медленно загружается.Скрыть iframe, пока он не будет полностью загружен

HTML

<div class="test"> 
<div class="hover">hover me</div> 
<div class="cool">cool</div> 
</div> 

CSS

body { background-color: black; } 
.hover { border: solid red; height: 40px; width: 40px; z-index: 1; color: white; } 

iframe {position: relative; left: 40px; } 

.test { border: solid blue; position: absolute; height: 300px; width: 500px; z-index: 3; } 

.cool { border: solid purple; background-color: black; } 

Jquery

$(document).ready(function(){ 
    $(".hover").on({ 
     mouseover: function(){ 
      $(this).next('.cool').html('<iframe width="370" height="215" src="//tsn.com" frameborder="0" ></iframe>'); 
     } 
    }); 
}); 

$(document).ready(function() { 
    $('.test').hover(function() { 



    }, function() { 
     $('.cool').html(''); 

    }); 
}); 

JS FIDDLE LINK

+0

Я думаю, ваш вопрос будет близок к дубликата этого ... http://stackoverflow.com/questions/3142837/ capture-iframe-load-complete-event Необходимо определить, когда загружается фрейм, а затем сделать его видимым. Другие вопросы и ответы иллюстрируют, как обнаружить событие, загруженное с кадра. – Kolban

+0

@ Kolban Я пытался скрыть iframe и показать его, когда он загружен, но он не работает. Я все еще получаю это белое мерцание. Посмотрите эту скрипку http://jsfiddle.net/a91bmc4e/5/ –

ответ

0

Edit, Обновлено

Try (v4)

$.fx.interval = -1000; 

$(document).ready(function() { 
    var frame = $('<iframe></iframe>', { 
     width: "370", 
     height: "215", 
     src: "//tsn.com", 
     frameborder: "0", 
     style: "display:none;" 
    }); 
    frame.on("load", function (e) { 
     $(e.target) 
      .fadeIn(1000, "linear"); 
    }); 

    $(".hover").on({ 
     mouseover: function() { 
      $('.cool').append(frame) 
     } 
    }); 
}); 

$(document).ready(function() { 
    $('.test').hover(function() { 
    // 
    }, function() { 
     $('.cool iframe').detach();  
    }); 
}); 

jsfiddle http://jsfiddle.net/LaL9nkup/60/

+0

спасибо, но я не хочу, чтобы iframe загружался с моей страницей, я хочу, чтобы она была загружена только при вызове. –

+0

@Newbie См. Обновленное сообщение. Спасибо – guest271314

+0

скрипка # 50, она работает на firefox, но на хроме я все еще вижу мерцание при первом зависании. В Explorer 11 я вижу, что он мерцает всякий раз. –

Смежные вопросы