ページを開いたときにファイルをダウンロードするために、次のメタ ヘッダーを使用しています。
<meta http-equiv="refresh" content="3;URL=SomeFileName" />
3 秒が経過したとき、つまりブラウザが SomeFileName のダウンロードを開始する直前に、JavaScript コードを実行する方法はありますか?
ページを開いたときにファイルをダウンロードするために、次のメタ ヘッダーを使用しています。
<meta http-equiv="refresh" content="3;URL=SomeFileName" />
3 秒が経過したとき、つまりブラウザが SomeFileName のダウンロードを開始する直前に、JavaScript コードを実行する方法はありますか?
ほとんどの場合、純粋な JavaScript リダイレクト関数の方が優れたソリューションですが、それが必要になる場合もあります。
これらを見てみましょう:
http://www.w3schools.com/jsref/event_onunload.asp
Web ページから移動するときのアラート
http://msdn.microsoft.com/en-us/library/ie/ms536907(v =vs.85).aspx
https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload
基本的に、ユーザーがページを閉じようとするか、ページから移動しようとすると、イベントが発生します。カスタマイズのためにそのイベントに接続できます。
window.onbeforeunload = function () {
var who = ["lover", "friend"][(Math.floor(Math.random()*2)+1)];
return "Goodbye my " + who;
};
この関数は文字列を返すか、何も返さないはずです。文字列の場合は、移動を確認するダイアログ ボックスが表示されます。何もない場合、つまり undefinedの場合、インターセプトは発生しません。
また、次の点にも注意してください。
2011 年 5 月 25 日以降、HTML5 仕様では、window.showModalDialog()、window.alert()、window.confirm()、および window.prompt() メソッドの呼び出しは、このイベント中に無視される可能性があると規定されています。
時間を計るのに使用できますsetTimeout()
が、コメントに記載されているように、この場合は JavaScript でリダイレクトする方がはるかに優れています。例:
setTimeout(function(){
/*
* code here will be executed before the download
*/
document.location = "downloadurl";
}, 3000); // 3000ms = 3s