基本上,如何做這項工作:http://www.stream-hub.com/demo/RealTimeChart/index.htmlStreamHub如何通過iFrame實現AJAX?
他們正在通過iframe不斷流JS和瀏覽器窗口不顯示的頁面爲「加載」。他們是怎麼做到的?流媒體部分很簡單,但它們如何防止瀏覽器窗口處於持續「加載」狀態?
謝謝!
基本上,如何做這項工作:http://www.stream-hub.com/demo/RealTimeChart/index.htmlStreamHub如何通過iFrame實現AJAX?
他們正在通過iframe不斷流JS和瀏覽器窗口不顯示的頁面爲「加載」。他們是怎麼做到的?流媒體部分很簡單,但它們如何防止瀏覽器窗口處於持續「加載」狀態?
謝謝!
想通了。我們的想法是編程方式創建的IFRAME像這樣:
function setupAjax()
{
var iframe = document.createElement("iframe");
iframe.src = "push.php";
iframe.style.display = "none";
document.body.appendChild(iframe);
}
然後.. <body onload="setupAjax()">
雖然這隻適用於Firefox和IE瀏覽器,不Safari或Chrome。 – 2010-06-04 22:33:39
嘗試設置超時,即:'window.onload = function(){setTimeout (setupAjax,500);}' – 2010-06-04 23:47: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。該腳本將在加載完所有文檔後調用您的函數。不要忘記檢查風險,並停止按鈕。
我不確定這是爲什麼,但它似乎是他們加載第一個'about:blank'後的第二個iframe。 – 2010-06-04 18:53:11
是的,我也嘗試過,它不起作用:( – 2010-06-04 18:55:13