为iFrame添加动态载入提示优化用户体验

平常开发网站避免不了使用 iFrame 框架,但是当网络环境不好时 iFrame 内容一直都是直勾勾的加载,并且未加载完成之前还会强行占据一大片空白区域,体验很不友好!昨天在制作展示导航 wordpress 插件时,把这个问题也一并处理了,其中涉及到了这个 iFrame 动态载入效果,现在记录一下,顺便分享。

完整代码:

<div style="float: left;width: 205px;font-size: 13px !important;line-height: 20px;" id="loading">
    <img style="floa: left;height: 20px;width: 20px;" src="/loading.gif" />
    联盟导航加载中,请稍后...
</div>
<iframe id="zgboke" onreadystatechange=stateChangeIE(this) onload=stateChangeFirefox(this) style="visibility: hidden;padding: 0px; width: 100%; height="0" src="http://zgboke.com/hutui.html" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<script language="javascript">
 function stateChangeIE(_frame)
    {
       if (_frame.readyState=="interactive")
     {
          var loader = document.getElementById("loading");
          loader.innerHTML      = "";
          loader.style.display = "none";
          _frame.style.visibility = "visible";
         }
 }
    function stateChangeFirefox(_frame)
      {
          var loader = document.getElementById("loading");
          var f= document.getElementById("zgboke");
          f.height="512";
          loader.innerHTML      = "";
          loader.style.display = "none";
          _frame.style.visibility = "visible";
 }
</script>

以下是依葫芦画瓢的方法:

①、在 iframe 代码之前先插入一个 div 用于 iframe 载入前的显示,除了 id 需要一一对应,其他自行发挥即可。

②、将 iframe 的高度设为 0,并在原有 iframe 的基础上插入加载前和加载后的函数调用

onreadystatechange=stateChangeIE(this) 
onload=stateChangeFirefox(this)

③、如代码的 8~28 行新增 2 个 js 函数即可,注意上下元素 ID 需要一 一对应;

④、其中 22 和 23 行禁止 iframe 未加载完成的空白占位,只有加载完成之后,才会将 iframe 的高度还原为 512。
Ps:代码涉及的元素 ID 对应及 CSS 调节,请自行搞定,就不赘述了。

http://xzh.i3geek.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途及非法用途,否则后果自负!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"qq301.com",如遇到无法解压的请联系管理员!
资源客是一个优秀的分享资源站,本站资源均为各位友友分享而来,特殊原创会标明如有侵犯版权等可联系删除

资源客 » 为iFrame添加动态载入提示优化用户体验