0

ページを開いたときにファイルをダウンロードするために、次のメタ ヘッダーを使用しています。

<meta http-equiv="refresh" content="3;URL=SomeFileName" />

3 秒が経過したとき、つまりブラウザが SomeFileName のダウンロードを開始する直前に、JavaScript コードを実行する方法はありますか?

4

2 に答える 2

1

ほとんどの場合、純粋な 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() メソッドの呼び出しは、このイベント中に無視される可能性があると規定されています。

于 2012-12-16T15:27:31.107 に答える
1

時間を計るのに使用できますsetTimeout()が、コメントに記載されているように、この場合は JavaScript でリダイレクトする方がはるかに優れています。例:

setTimeout(function(){
    /*
     * code here will be executed before the download
     */
    document.location = "downloadurl";
}, 3000); // 3000ms = 3s
于 2012-12-16T15:13:56.950 に答える