2011-11-18 76 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

相關問題