Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > iframe1.document.write в IE срабатывает через раз


Автор: ludaq 20.9.2009, 22:10
Если в IE7 циклически отправляем в ифрейм location="about:blank", а потом данные, то один раз срабатывают оба действия, а второй раз только первое. И так циклически, непарные показывают, а парные нет. 
В опере и лисе нормально отрабатывает.. Как это побороть? 
Вот код.
Код

  
<script LANGUAGE="JavaScript" TYPE="text/javascript"> 
function pishem(as){ 
 as=as+1; 
iframe1.location="about:blank"; 
iframe1.document.write(as); 
setTimeout (function(){pishem(as)},2000); 
 } 
 
</SCRIPT> 
<body onload="pishem(0);" > 
<iframe  name="iframe1" align="center" scrolling="yes" frameborder="1" marginheight="0" marginwidth="0"></iframe>


Автор: Amphiluke 20.9.2009, 22:39
Хм. Похоже, IE не успевает обрабатывать запросы. Ему требуется немного больше времени, чтобы перезагрузить документ в iframe. Основания так считать дает то, что предоставление IE небольшого дополнительного времени на загрузку вроде бы исправляет ситуацию...
Код

function pishem(as){
 as=as+1; 
iframe1.location="about:blank";
setTimeout(function() {
iframe1.document.write(as); 
setTimeout (function(){pishem(as)},2000); }, 300);
 } 


Хотя точно сказать, в чем причина, не возьмусь. Странная довольно задача у вас. smile 

Автор: ludaq 20.9.2009, 22:56
Цитата(Amphiluke @ 20.9.2009,  22:39)
Код

function pishem(as){
 as=as+1; 
iframe1.location="about:blank";
setTimeout(function() {
iframe1.document.write(as); 
setTimeout (function(){pishem(as)},2000); }, 300);
 } 



Спасибо, но похоже у Вас ошибка в коде. У меня не срабатывает.

Автор: Amphiluke 20.9.2009, 23:06
Не знаю, у меня во всех браузерах весело работает. Я всего-то лишь добавил к вашему коду временнУю задержку на вызов методов write и зацикливающего setTimeout. Какая там ошибка?  smile  Вот полный код, на всякий случай.
Код

<html>
<head>
<script type="text/javascript">
function pishem(as){
 as=as+1; 
iframe1.location="about:blank";
setTimeout(function() {
iframe1.document.write(as); 
setTimeout (function(){pishem(as)},2000); }, 300);
 } 
</script>
</head>
<body onload="pishem(0);"> 
<iframe id="iframe1" name="iframe1" align="center" scrolling="yes" frameborder="1" marginheight="0" marginwidth="0"></iframe>
</body>
</html>


Автор: ludaq 20.9.2009, 23:19
Все работает. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)