我不是很大的JavaScript大师所以我会很高兴,如果有人可以帮助我这个。 好吧,所以我想要做的是在准备文件时显示文件下载的简单指标。 现在,一切工作完美的Firefox中,但不会在IE加载器将创建的PHP和下载通过IFRAME。 现在,您可以从下面的代码中看到我检查了文档就绪状态,并且出于某种原因它保持了对IE的交互式,并且从未完成,但在Firefox中完成得很好。Javascript! IE文件准备就绪状态
if($_POST['download'])
{
echo '<iframe id="frame" src ="download.php?data='.$_POST['download'].'" width="0" height="0" frameborder="0" scrolling="no"></iframe>';
echo '<div id="loader">';
echo '<div id="loading-container"><p id="loading-content">Please wait while we prepare your files<img id="loading-graphic" width="220" height="19" src="images/indicator.gif" /></p></div>';
echo '</div>';
echo '<script type="text/javascript">
var wooIntervalId = 0;
var i = 0;
function startInterval()
{
wooIntervalId = setInterval(doSomething, 1000);
}
function doSomething()
{
document.getElementById("loading-content").innerHTML = document.readyState + i;
i++;
}
function remove_elem()
{
element = document.getElementById("loader");
element.parentNode.removeChild(element);
}
startInterval();
</script>';
}
我真的很喜欢的解决方案是这样的原因在Firefox删除指示它删除指示正确保存后会显示文件对话框,但在IE它这么想的只是工作。
window.onload = function()
{
element = document.getElementById("loader");
element.parentNode.removeChild(element);
}
Anny suggestions?
好的继承人脚本,在IE和Firefox中工作。 基本上我需要检查在Firefox中变成“NaN”的iframes就绪状态,并首先在IE中“加载”并在完整(IE)上“交互” 因此,我创建了带有“加载”值的startState以在浏览器导致IE更改它的状态两次,Firefox只有一次。 在Chrome和Opera中,iframe就绪状态变为“未定义”状态,并且只会执行一次,因此如果有人修复此问题,它也会很棒。
<script type="text/javascript">
var startingState = "loading";
var wooIntervalId = 0;
function startInterval()
{
wooIntervalId = setInterval(doSomething, 1000);
}
function doSomething()
{
var doc=document.getElementById("frame");
if(startingState != doc.readyState)
{
remove_elem();
clearInterval(wooIntervalId);
}
}
function remove_elem()
{
element = document.getElementById("loader");
element.parentNode.removeChild(element);
}
startInterval();
</script>';
请从setInterval(“doSomething()”中删除“and()” - 有一个隐藏的eval,而是使用'setInterval(doS Omething,1000)' – mplungjan
好吧,谢谢 – Kaido