2015-05-01 44 views
5

問題陳述:製作的iFrame加載速度更快,避免驗證錯誤

我有一個.NET用戶控件,我使用它裏面的iframe。我在頁面上有多個實例(可以是任何編號)的控件(包含一個iFrame)。每次一個控制狀態改變時,我必須加載所有控件。該控件具有一些必填字段。

我有一個按鈕,其導航到另一個屏幕,並因爲每一I加載所有控件它需要相當長的時間對所有的人都以加載時間。用戶嘗試完成所有必填字段並單擊下一個按鈕,即使用戶完成了所有必填字段,並且控件(與iframe)沒有完全加載,也會產生驗證錯誤。

注:以上所有的在JavaScript中,而不是服務器端。

我的嘗試:

  1. 我試圖顯示,直到它加載一個模式格,但我顯然不能捕捉到準確的加載時間和下一個按鈕,可以單擊可能。

  2. 我想有上驗證功能超時,但它的作品偶爾作爲加載不明確。

  3. 我試着有一個計數器來查看加載了多少個控件來檢查總控件,然後才允許驗證功能啓動,再次以明確的方式加載,並沒有幫助。

我知道這可以用不同的方式完成,但由於涉及的工作量很大,時間長,我們必須用現有的方式滾動,並且必須解決問題。有人可以請建議任何指針/解決這個問題。

+0

iFrames是從同一個域加載源還是不同? – Daved

+0

感謝您的評論。所有框架都從同一個域加載,每個框架都有一組控件,它們就像一個窗體並具有必需的項目。 – Immortal

+0

你是如何實現第三個選項的? –

回答

0

我得到這個固定。我認爲這是一個閃避,但我不知道任何其他方式。

我把方法3如上所述。有1ms的超時和計數器遞增在超時即

setTimeout(function() { 
    counter++; 
}, 1); 

我已經在我的驗證碼多一個櫃檯推遲它爲1ms,並檢查車況,如果計數器等於所有可用的控制,如果沒有驗證再一次,直到條件是錯誤的。否則繼續。

function validate() { 
     if (counter != total number of frames) { 
      setTimeout(function() { 
       validate(); 
      }, 1); 
      return false; 
     } 
... 
} 

感謝您的所有投入,它幫助了很多。希望這將成爲類似問題的最後解決方案。

+0

你在哪裏有第一個'setTimeout'? –

+0

對於延遲抱歉,超時正在加載iframe。 – Immortal