基本上,如何做这项工作: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