2010-04-27 1 views
1

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

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

Возможно ли это? Я думаю, возможно, с немного javascript, но не на 100% уверен.

ответ

2

Там нет "ASP-страницы", как только он попадет в браузер, есть только результирующий HTML.

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

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

2) Как сказать, когда Iframe погрузили

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

Затем вам необходимо определить, когда Iframe загрузил и спрячет этот элемент.

Вы можете использовать this code, чтобы определить, что 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

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

Another question на 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> 

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