2011-08-23 19 views
15

jQuery image lazy load pluginと似たようなものを探していますが、iframesです。jqueryで遅延iframe(遅延src httpコール)をロード

+1

最善の策は、単にDOMにインラインフレームを追加しないし、混乱のないチャンスはその後... – DaveRandom

+0

のiframeは、ハードDOMにコード化されていません。手動で挿入するオプションはありません。そうしなければ、最も簡単な方法でした。 – Steve

答えて

21

これは私のために働いた。

var iframes = $('iframe'); 

$('button').click(function() { 
    iframes.attr('src', function() { 
     return $(this).data('src'); 
    }); 
}); 

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

jsFiddle

+1

したがって、 'src'がDOMのhtmlでハードコードされている場合は' data-src'に変更し、必要に応じて 'src'に変更してコンテンツをロードしますか?また、私のイベントはスクロールに基づいているのではなく、クリックして ':target''が' div'を含んでいます。 – Steve

+0

@Maxあなたはそれを持っています。 – alex

+0

Downvoteの説明は? – alex

0

src属性をabout:blankに初期化してから、clickイベントが発生したときにsrc属性を移動先のURLに設定できます。

+0

iframe 'src'はDOMのHTMLでハードコードされており、about:blankで置き換えてDOM操作をあまり行わないことを望んでいます。変数)。 – Steve

0

srcをabout:blankに設定できますか?このような?

http://jsfiddle.net/MaUfH/

+0

'iframe'は、ページのHTMLに埋め込まれ、ページロード時に読み込まれます。あなたの例は' iframe' onClickを読み込みます。私の場合、これは動作しません。 – Steve

3

similar questionは最近だった私はLazy Loading of iFramesを呼んでいる技術を使用してTwitterのブートストラップベースのタブ、I answeredとのiFrameに固有掲載しました。 js/jqueryは次のとおりです。フィドルやOPに私の応答のHTMLマークアップを含む完全なコードを参照してください。

<script> 
$('#myTabs').bind('show', function(e) { 

// identify the tab-pane 
paneID = $(e.target).attr('href'); 

// get the value of the custom data attribute to use as the iframe source 
src = $(paneID).attr('data-src'); 

//if the iframe on the selected tab-pane hasn't been loaded yet... 
if($(paneID+" iframe").attr("src")=="") 
{ 
    // update the iframe src attribute using the custom data-attribute value 
    $(paneID+" iframe").attr("src",src); 
} 
}); 
</script> 
0

あなたはここ

、自動要求還元されるワードプレスでこれを実行したい場合は、ソリューション

ここで

WordPressのプラグインの形で

は、あなたがダウンロードして、手動でリポジトリをプラグインワードプレスを経由してインストールすることができますプラグインワードプレスです。今日私はこの状況を処理するためにこれを作成しました。コンテンツへの変更は必要ありません。これは、すべてのiframeで一度アクティブになると自動的に動作します。あなたはそれをロードするまで

https://wordpress.org/plugins/lowermedia-iframes-on-demand/