私は誰かがこれで私を助けることができる場合、私は喜んでいるので、ビッグ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>';
}
私は本当にそれが後のファイルダイアログが表示されますが、IEでそれがうまく動作dosen't保存権利インジケータを削除し、Firefoxでこの原因のような指標を除去するためのソリューションが好きでした。
window.onload = function()
{
element = document.getElementById("loader");
element.parentNode.removeChild(element);
}
Anny suggestions?
IEとFirefoxで動作するOk heresスクリプト。 基本的に私はFirefoxで "NaN"を反転させるiframe ready状態をチェックする必要があります。まずIEで "読み込み"、完全(IE)で "インタラクティブ"にします したがって、両方のブラウザで値を "読み込む" IEの状態が2回、Firefoxが1回だけ変更されます。 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()"を削除してください - 隠れた評価がありますが、代わりに 'setInterval(doS omething、1000) ' – mplungjan
ありがとうございました – Kaido