【问题标题】:Prevent iframes and images from loading with jquery防止使用 jquery 加载 iframe 和图像
【发布时间】:2012-04-09 16:30:15
【问题描述】:

我目前正在开发一个社交网站,首页上有一个 jquery accordion 和以下选项

$( "#accordion" ).accordion({
       autoHeight: false,
       animate:"fast",
       active: false,
       collapsible: true });

,手风琴的每个部分都有一个 iframe[iframe 或对象或嵌入],其中包含来自不同来源的视频,如 youtube、vimeo、dailymotion、bliptv、scribd(doc) 等或来自 flickr、imgur 等的图像包装在

<div class="embed-container"></div>

在 .ui-accordion-content 中

在页面加载所有这些 iframe 和图像开始加载并使页面非常慢 我想要的是

1) 阻止嵌入容器 div 的内容在页面加载时完全加载

2) 当一个特定的手风琴部分打开时,该部分的嵌入容器 div 应该加载

3) 当手风琴部分关闭时,embed-container div iframe 或图像应该停止所有加载

到目前为止我已经尝试过了

$('.embed-container').hide();

$('.ui-accordion').bind('accordionchangestart', function(event, ui) {
ui.newContent.find('.embed-container').show();
ui.oldContent.find('.embed-container').hide();
});

寻找跨浏览器解决方案(ie7+,ff3+,chrome) 谢谢

【问题讨论】:

标签: jquery image iframe loading


【解决方案1】:

您可以动态加载手风琴的内容,以便在初始加载期间它们不包含任何内容。然后您可以为每个折叠分配一个“折叠 ID”以指示单击了哪个折叠,并通过 AJAX 加载适当的内容。这样,只会加载我们想要看到的内容,而不是全部。

<h3>
    <a href="#3">Section 3</a> //this example uses href as an id
</h3>
<div>
    <p>
        accordion contents

然后在伪代码中,我们使用 AJAX 动态获取内容:

$.get('url_of_resources?itemid='+itemHref,function(data){
    $('div_of_accordion').html(data);
});

【讨论】:

  • 我有这个想法,但我正在避免它,因为有很多 ajax 请求,谢谢
  • 哪个会更多“很多”?无论是否需要,都一次性加载多个东西?还是仅在需要时才使用 AJAX 加载它们?
【解决方案2】:

您可以将 iframe 的“src”属性设置为 youtube、vimeo 等。只有在用户点击手风琴部分之后。

例如。

$('.ui-accordion').bind('accordionchangestart', function(event, ui) {
   ui.newContent.find('.embed-container iframe').attr('src', 'http://www.vimeo.com');
});

【讨论】:

  • 是的,在关闭的部分删除 .embed-container 内容并在打开的部分注入它是我的最后选择,但想像这里digg.com/news/all/videos/recent 那样做,不知道怎么感谢
  • 为什么这是你的最后选择?听起来这正是您想要的。看起来 Digg 预嵌入了 Flash 视频播放器 (ooyala),而不是使用 iframe。只有在显示播放器元素时才会渲染 Flash。它还具有传递给它的数据以链接到视频的实际来源。
  • 我期待在 jquery 中为 html 的“延迟加载”提供更优雅的方法,当我查看那个 digg 链接时,他们只是在使用 display:none 而不是 embed-container 但他们里面有对象标签,不是 iframe,可能会有所不同吗?
  • 是的。 Flash 播放器在显示之前不会渲染。但 iframe 的作用不同。在 Chrome 中,即使样式设置为“display:none”,它们仍会加载。这就是为什么您应该在用户展开手风琴时动态设置“src”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多