2015-05-01 3 views
5

Устранение проблемы:Выполнение загрузки iFrame во избежание ошибок проверки

У меня есть пользовательский элемент управления .NET, и я использую внутри него iFrame. У меня есть несколько экземпляров (может быть любое число) этого элемента управления (с iFrame в нем) на странице. Я должен загружать все элементы управления каждый раз, когда изменяется одно состояние управления. У элемента управления есть обязательные поля для заполнения.

У меня есть кнопка, которая переходит на другой экран, и поскольку каждый раз, когда я загружаю все элементы управления, для загрузки их требуется значительное количество времени. Пользователь пытается заполнить все обязательные поля и нажать следующую кнопку, на этом экземпляре, даже если пользователь выполнил все обязательные поля, а элемент управления (с iframe) не загрузился полностью, он вызывает ошибку проверки.

Примечание: Все вышесказанное приведено в JavaScript, а не на стороне сервера.

Что я пробовал:

  1. Я попытался показывать модальный DIV, пока он загрузится, но я не могу, по-видимому захватить точное время загрузки и следующая кнопка может быть потенциально щелкнул.

  2. Я пробовал иметь таймаут в функции проверки, но он работает спорадически, так как загрузка не является окончательной.

  3. Я попытался иметь счетчик, чтобы узнать, сколько элементов управления загружено, чтобы проверить общие элементы управления, и только затем разрешить функцию проверки правильности, опять же, в конечном итоге, он не помогает.

Я знаю, что это может быть сделано по-другому, но из-за огромного времени и усилий, участвующих, мы должны свернуть с существующим способом, и должны исправить эту проблему. Может кто-нибудь, пожалуйста, предложите любые указатели/обходную проблему.

+0

Являются ли iFrames загружаемыми источниками из того же домена или разными? – Daved

+0

Спасибо за ваш комментарий. Все кадры загружаются из одного домена, каждый кадр имеет набор элементов управления, который похож на форму и содержит обязательные элементы. – Immortal

+0

Как вы реализовали третий вариант? –

ответ

0

У меня этот фиксированный. Исправление, которое я считаю, является уловкой, но я не знал другого пути.

Я принял подход 3, как указано выше. Были ли тайм-аут с 1мс и счетчик увеличивается в том, что тайм-аут т.е.

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

Я еще один счетчик на мой код проверки, чтобы задержать его на 1мс и проверить состояние, если счетчик равен всем доступных элементов управления, если не проверять снова, пока условие не будет ложным. В противном случае продолжайте.

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

Спасибо всем за ваш вклад, это очень помогло. Надеюсь, это будет последнее решение для подобных вопросов.

+0

Где у вас есть этот первый 'setTimeout'? –

+0

Извините за задержку, тайм-аут находится на нагрузке iframe. – Immortal

Смежные вопросы