2010-06-04 66 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。该脚本将在加载完所有文档后调用您的函数。不要忘记检查风险,并停止按钮。