为iFrame添加动态载入效果,提高用户体验 | 张戈博客

  • 时间:
  • 浏览:0

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

先展示下效果:

加载中:

完成后:

以下是全部代码:

<div  id="loading">
    <img  src="http://zgboke.com/loading.gif" />
    联盟导航加载中,请稍后...
</div>
<iframe id="zgboke" onreadystatechange=stateChangeIE(this) onload=stateChangeFirefox(this) 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代码完后 先插入另有4个 div用于iframe载入前的显示,除了id还要一一对应,很久 自行发挥即可。

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

onreadystatechange=stateChangeIE(this

onload=stateChangeFirefox(this

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

④、其中22和23行禁止iframe未加载完成的空白占位,不能加载完成完后 ,才会将iframe的层厚还原为512。

Ps:代码涉及的元素ID对应及CSS调节,请自行学会英语,就不赘述了。