2011-11-18 74 views
0

我正在开发iPad应用程序,因为有超过6个iframe可用。完全加载页面后,页面滚动到中间的某个位置。因此,我决定让页面scrolltop写入如下JavaScript代码:更好的方法来查找页面上的所有iframe

$(document).ready(function() { 
     try { 
      var iframecompleted = []; 
      $("iframe[id*='iframe']").each(function(eli, el) { 
       $(this).bind("load", iframeinit); 
      }); 
      function iframeinit() { 
       iframecompleted.push($(this).id); 
       $(this).unbind("load", iframeinit); 
      } 

      var timer = setInterval(function() { 
       if ($("iframe[id*='iframe']").length == iframecompleted.length) { 
        clearInterval(timer); 
        $('html, body').animate({ 
         scrollTop: 0 
        }, 500); 
        if (FrameID != "") { 
         var j = 0; 
         var ss = FrameID.split(",") 
         for (j = 0; j < ss.length; j++) { 
          var collPanel = $find("pane" + ss[j]); 
          if (collPanel != null) 
           collPanel.set_Collapsed(true); 
         } 
         FrameID = ""; 
        } 
       } 
      }, 10); 
     } 
     catch (e) { 
      alert(e); 
     } 
    }); 
} 

我想找到一个更好的方法来实现这个任务。你的想法更受欢迎。

+0

什么'FrameID'?此外,您的代码可以轻松优化:如果您只使用iframecompleted进行计数,请不要使用数组 - 请使用数字。你的iframe选择器可以被缓存,为什么你要在'$('html,body')'而不是'$(body)'上调用'animate'? – Zirak

回答

0

你可以做这样的事情:

var count = 0; 

$("iframe").load(function() { 
    if (++count === 6) 
    { 
     alert("TODO: All the frames are loaded, do you stuff"); 
    } 
}); 

http://jsfiddle.net/eDVEY/

+0

谢谢你的帮助,让我更清楚。 – nakkeeran

0

你可以做这样的事情:

 
var count = $('iframe').length; 
    $(function() { 
     $('iframe').load(function() { 
     count--; 
     if (count == 0) 
      alert('all frames loaded'); 
     }); 
    }); 

希望它可以帮助

+0

谢谢你,你的代码看起来很简单,我在我的项目中使用。 – nakkeeran

相关问题