2010-06-04 103 views
0

基本上,如何做這項工作:http://www.stream-hub.com/demo/RealTimeChart/index.htmlStreamHub如何通過iFrame實現AJAX?

他們正在通過iframe不斷流JS和瀏覽器窗口不顯示的頁面爲「加載」。他們是怎麼做到的?流媒體部分很簡單,但它們如何防止瀏覽器窗口處於持續「加載」狀態?

謝謝!

+0

我不確定這是爲什麼,但它似乎是他們加載第一個'about:blank'後的第二個iframe。 – 2010-06-04 18:53:11

+0

是的,我也嘗試過,它不起作用:( – 2010-06-04 18:55:13

回答

0

想通了。我們的想法是編程方式創建的IFRAME像這樣:

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

然後.. <body onload="setupAjax()">

+0

雖然這隻適用於Firefox和IE瀏覽器,不Safari或Chrome。 – 2010-06-04 22:33:39

+0

嘗試設置超時,即:'window.onload = function(){setTimeout (setupAjax,500);}' – 2010-06-04 23:47:27

1

因爲它是使用的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。該腳本將在加載完所有文檔後調用您的函數。不要忘記檢查風險,並停止按鈕。