网站建设

为iFrame添加动态载入效果,提高用户体验

张戈 · 8月12日 · 2014年 ·

中国博客联盟-成员展示导航一直都是直勾勾的加载,并且未加载完成之前还会强行占据一大片空白区域,体验很不友好!昨天在制作展示导航 WordPress 插件时,把这个问题也一并处理了,其中涉及到了这个 iFrame 动态载入效果,现在记录一下,顺便分享。

先展示下效果:

加载中:

为iFrame添加动态载入效果,提高用户体验

完成后:

为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="http://zgboke.com/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 调节,请自行搞定,就不赘述了。

17 条回应
  1. 热腾网2014-8-13 · 8:50

    这个不错,我考虑下放到我的另个使用多说的站上。

    • 张戈2014-8-13 · 8:55

      多说本身就有这个机制~你说的是别的框架么?

      • 热腾网2014-8-13 · 9:01

        多说有问题了,我的那个页面什么都不显示。也没加载的那个小图标。

  2. 热腾网2014-8-13 · 9:31

    f.height=”512″;这个怎么能让高度自动调节?

    • 张戈2014-8-13 · 11:58

      这个应该要另外加函数了。。。auto应该不行。

  3. 梦轩丽人2014-8-13 · 12:50

    那我们网站的那个还需不需要更换?

    • 张戈2014-8-13 · 13:11

      这是给不知道用js代码的博友用的,会用js的就不需要了~~当然,愿意支持下载试试也是不错的哈,最好可以去官方给个5星好评,哈哈

      • 梦轩丽人2014-8-13 · 13:13

        那就懒得折腾了,给5星评价有没有链接啊,这个可以有

        • 张戈2014-8-13 · 13:16

          http://wordpress.org/support/view/plugin-reviews/zgboke-nav 不过是洋文的,而且还要登陆。

          • 梦轩丽人2014-8-13 · 13:21

            没那我去看看,注册一个号还是挺简单的!

            • 张戈2014-8-13 · 13:21

              太有心了,感谢!

              • 梦轩丽人2014-8-13 · 14:06

                折腾了很久,还是未能成功注册,说什么ERROR: Please use the reCAPTCHA to verify that you’re not a robot. 我又找不到reCAPTCHA在哪里,无语啊!

                • 张戈2014-8-13 · 17:36

                  要你输入验证码。。。

                  • 梦轩丽人2014-8-13 · 17:40

                    用了360浏览器和火狐浏览器,都没看到有验证码的,晚上回家我再试试!

  4. 超級efly2014-8-14 · 13:52

    前來支持一下~~這個效果還是挺不錯的!

  5. 小幻2015-8-24 · 15:53

    感觉和ajax载入似的,很高大上~

  6. seclove2016-6-25 · 10:52

    签到成功!签到时间:上午10:50:22,每日签到,生活更精彩哦~