2011-08-23 70 views
15

Tôi đang tìm kiếm một cái gì đó tương tự như jQuery image lazy load plugin, nhưng đối với iframe s.iframe tải chậm (trì hoãn src http gọi) với jquery

+1

đặt cược tốt nhất là chỉ cần không thêm các iframe vào DOM cho đến khi bạn muốn tải nó, không có cơ hội nhầm lẫn rồi ... – DaveRandom

+0

Iframe được cứng mã hóa vào DOM. Tôi không có tùy chọn để chèn chúng theo cách thủ công, nếu không thì đây sẽ là tuyến đường dễ nhất. – Steve

Trả lời

21

Điều này phù hợp với tôi.

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

Vì vậy, nếu 'src' được mã hóa cứng trong html của DOM, hãy thay đổi chúng thành' data-src' sau đó theo yêu cầu, hãy thay đổi nó thành 'src' để tải nội dung? Ngoài ra, sự kiện của tôi không dựa trên cuộn, mà đúng hơn là nhấn vào ': target' chứa' div'. – Steve

+0

@Max Bạn đã hiểu. – alex

+0

Giải thích về Downvote? – alex

0

Bạn luôn có thể intialize thuộc tính src thành about: blank và sau đó khi sự kiện nhấp của bạn kích hoạt, hãy đặt thuộc tính src cho URL bạn muốn điều hướng đến.

+0

iframe 'src' được mã hóa cứng trong HTML của DOM và không muốn thực hiện quá nhiều thao tác DOM bằng cách thay thế nó bằng about: blank và sau đó thay thế nó bằng URL (cần được lưu trữ dưới dạng một biến số). – Steve

0

Bạn có thể đặt src thành about: blank không? Như thế này?

http://jsfiddle.net/MaUfH/

+0

'iframe' được nhúng vào HTML của trang và được tải khi tải trang, trong khi ví dụ của bạn tải' iframe' onClick. Điều này không làm việc trong trường hợp của tôi. – Steve

3

Một similar question gần đây đã được đăng tải cụ thể để khung nội tuyến với các tab Twitter Bootstrap dựa trên, mà tôi answered sử dụng một kỹ thuật gọi tôi Lazy Loading of iFrames. Js/jquery như sau; xem mã đầy đủ bao gồm đánh dấu html trong fiddle hoặc trên phản ứng của tôi vào OP:

<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

Nếu bạn muốn làm điều này trong WordPress

Dưới đây là một số tự động, yêu cầu giảm, giải pháp

Trong biểu mẫu plugin WordPress

Đây là plugin WordPress bạn có thể tải xuống và cài đặt thủ công qua kho lưu trữ plugin WordPress. Tôi tạo ra điều này ngày hôm nay chỉ để xử lý tình trạng này. Không cần thay đổi nội dung, thao tác này sẽ tự động hoạt động sau khi được kích hoạt trên bất kỳ và tất cả iframe.

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

Các vấn đề liên quan