ページがロックされているため、JavaScript では何もできません。これもロックされているためです。
しかし、あなたは何をしようとしていますか?ユーザーがファイルをダウンロードしているという事実を何らかの方法でログに記録しようとしていますか? はいの場合、それを行うためのより良い方法があり、それらはサーバー側にあります。サーバー側のスクリプト言語を使用してファイルを提供し、ダウンロードされたという事実をログに記録します。
それがあなたがやろうとしていることではない場合、唯一の方法はonclick
リンクまたはonunload
/のいずれかを使用するonbeforeunload
ことですが、これらは信頼性が低く、ブラウザーごとにまったく異なる動作が見られると確信しています。
実は、そういえばもう一つ方法があるのですが、とても汚いです。アイデアは、毎秒実行する間隔を設定し、2 つの実行の間に 1 秒以上経過したかどうかを確認することです。何かのようなもの:
var lastTime = new Date().getTime();
function checkTime() {
var curTime = new Date().getTime();
if (curTime - lastTime > 1100) { // 1100 because there might be small browser lags
// do something after the dialog appeared and the user did something with it
}
lastTime = curTime;
}
setInterval(checkTime, 1000);
そのダイアログが開いている間、ページをブロックしないブラウザー (Chrome がその例だと思います) があるため、これが機能しない可能性があることに注意してください。これを使用する場合は、すべてを再確認してください。
私は今シャワーを浴びに行かなければなりません。