Можно ли изменить содержимое iframe на классической странице ASP после ее загрузки? - PullRequest
1 голос
/ 28 апреля 2010

У меня есть классическая страница ASP, которая загружает страницу ASP.net через iframe внутри страницы ASP. Это прекрасно работает, за исключением того факта, что загрузка страницы ASP.net занимает некоторое время. Пользователь остается здесь с неблагоприятным опытом, потому что все, что они говорят, это пустая пустая страница, пока страница не завершит загрузку.

То, что я хотел бы сделать, это загрузить начальную «загрузочную» страницу ASP.net, чтобы, по крайней мере, пользователю что-то показывали, а затем, когда страница ASP.net готова, загрузите правильную страницу ASP.net в iframe.

Возможно ли это? Я думаю, возможно, с небольшим количеством JavaScript, но не уверен на 100%.

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

После того, как браузер попадет в браузер, «ASP-страница» не будет отображаться только в результате.

У вас есть несколько проблем здесь:

1) Если вы поместите что-то в Iframe, оно будет перезаписано, как только загрузится новая страница. Таким образом, вы не можете использовать содержимое Iframe для отображения вашего сообщения.

2) Как узнать, когда был загружен Ифраме

Вам необходимо определить местоположение и размер Iframe на своей странице. Вы должны поместить элемент поверх него с вашим сообщением. Измените стиль абсолютно позиционированного элемента, чтобы покрыть Iframe, используя JavaScript. Большинство людей используют каркас, такой как jQuery, чтобы сделать его намного проще.

Затем необходимо определить, когда загружен Ифраме, и скрыть этот элемент.

Вы можете использовать этот код , чтобы определить, загружен ли Iframe:

function checkIframeLoading() {
   // Get a handle to the iframe element
   var iframe = document.getElementById('testIframe');

   // Check if loading is complete
   if ( iframe.document.readyState == 'complete' ) {
      // The loading is complete, call the function we want executed once the iframe is loaded
      functionToCallAfterLoading();
      return;
   }

   // If we are here, it is not loaded. Set things up so we check   the status again in 100 milliseconds
   window.setTimeout('checkIframeLoading();', 100);      
}
2 голосов
/ 28 апреля 2010

Вы можете использовать JQuery для изменения iframe после загрузки страницы.

Другой вопрос для stackoverflow уже содержит хороший пример:

<html>
  <head>
        <script type="text/javascript" src="jquery.js"></script>
        <script>
      $(document).ready(function(){
            var locations = ["http://webPage1.com", "http://webPage2.com"];
            var len = array.length;
            var iframe = $('#frame');
            var i = 0;
            setInterval(function () {
                    $iframe.attr('src', locations[++i % len]);
            }, 30000);
      });
    </script>

...