我不是很大的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