2013-04-18 50 views
0
<style> 
.desgin_iframe_dimn { 
background: white; 
height: 500px; 
width: 500px; 
} 
</style> 
<iframe scrolling="no" id="lazy" class="desgin_iframe_dimn" data-src="http://www.google.com"></iframe> 
<p class="lazy">Click Here</p> 
<script> 
function LazyLoadIframe() { 
$('.lazy').click(function() { 
    $('#lazy').attr('src', function() { 
     return $(this).data('src'); 
    }); 
}); 

$('#lazy').attr('data-src', function() { 
    var src = $(this).attr('src'); 
    $(this).removeAttr('src'); 
    return src; 
}); 

} 
LazyLoadIframe(); 
</script> 

演示是在這裏jsfiddleiframe的延遲加載未在IE7工作

上面的代碼工作以及在其他瀏覽器也IE9 & IE8但不是在IE7。我該如何解決 ?

+0

I幀應該得到過時了,你爲什麼不使用DIV和$不用彷徨? – 2013-04-18 04:40:08

+0

我必須使用iframe,所以只需要找到解決方案。 – 2013-04-18 04:46:47

回答

1

我不知道爲什麼你有這樣的部分代碼:

$('#lazy').attr('data-src', function() { 
    var src = $(this).attr('src'); 
    $(this).removeAttr('src'); 
    return src; 
}); 

但由於#lazy沒有src,這可能是壓垮它在IE7的部分。其他瀏覽器可能會工作,因爲這段代碼是在html中聲明iframe之前執行的。

我想你想要的是這樣的:

HTML

在這裏,我感動數據-SRC可點擊<p>

<iframe scrolling="no" id="lazy" class="desgin_iframe_dimn"></iframe> 
<p class="lazy" data-src="http://www.wikipedia.com/">Click Here</p> 

的Javascript

$(function() { 
    $('.lazy').click(function() { 
     $('#lazy').attr('src', $(this).data('src')); 
    }); 
}); 

其中$(function() { });在文檔加載時執行。不要只是調用了HTML中間的功能時,必須考慮使用$(function() {});

我也弄不明白你爲什麼這樣做function() { return $(this).data('src') },而你可以做$(this).data('src'),所以我糾正這一點。

jsFiddle here

+0

謝謝,它的工作。 考慮到這個'$(function(){});'我怎麼能在很多地方調用這個函數? – 2013-04-18 07:57:14