В принципе, как это работает: http://www.stream-hub.com /demo/RealTimeChart/index.html

Они непрерывно передают JS через iframe, и окно браузера НЕ показывает страницу как «загружающуюся». Как они это сделали? Потоковая часть проста, но как они препятствуют тому, чтобы окно браузера находилось в состоянии постоянной «загрузки»?

Благодарность!

0
David Titarenco 4 Июн 2010 в 22:50

2 ответа

Лучший ответ

Догадаться. Идея состоит в том, чтобы программно создать iframe следующим образом:

function setupAjax()
{      
  var iframe = document.createElement("iframe");      
  iframe.src = "push.php";
  iframe.style.display = "none";    
  document.body.appendChild(iframe);  
}   

А затем .. <body onload="setupAjax()">

0
David Titarenco 4 Июн 2010 в 22:27

Потому что он использует XMLHttpRequest () ;. Stream-hub использует метод длительного опроса. Конечно, меня этот метод не интересует из-за задержки. Вы можете использовать встроенный фрейм. На index.html

function setupAjax()
{      
  var iframe = document.createElement("iframe");      
  iframe.src = "push.php";
  iframe.style.display = "none";    
  document.body.appendChild(iframe);  
}
function update(data)
{
  alert(data);
}

На push.php

<?php
 for ( i = 0; i < 10; i++ ) {
    echo "<script>window.parent.update('" . i . "')</script>";
    sleep(1);
 }
?>

Но не забывайте, что этот метод все еще нуждается в настройке. Обычная проблема, такая как браузер всегда показывает загрузку, чтобы избежать этого, вы можете использовать библиотеку BEHAVIOR javascript для вызова вашего setupAjax. Этот скрипт вызовет вашу функцию после загрузки всего документа. Не забудьте отметить Escape и кнопку остановки.

1
necrose 22 Окт 2010 в 21:53