以下のJavaScriptのコードには2つのステップがあります。
ステップ1:.pdf、.doc、.exe、またはhtmlネイティブではないものに移動します。location.hrefがブラウザウィンドウを引き継いだ場合は、手順2を実行する必要はありません(通常、PDFがブラウザウィンドウを引き継ぎます)。他のほとんどのものは、ダウンロードマネージャープロセスを開始します。.exeなど。ただし、Wordドキュメントなど、ブラウザの設定に応じてダウンロードしたり、ブラウザウィンドウに直接表示したりできるものもあります。hef.locationが実行することを実行してほしい。
ステップ2:しかし、そのプロセスが完了した後に.exeなどのファイルをダウンロードしている場合は、ホームページに移動します。
または、ステップ1と2の間に5秒間待つだけの解決策は、ほとんどの場合機能しているようです。ただし、接続速度が遅い場合は、常に機能するとは限りません。次に、最初のhref.location呼び出しを終了せずにホームページに移動し、PDFが表示されることはなく、ホームページのみが表示されます。
参考までに...setTimeOutでラップしている理由は、このFirefoxの問題に関連しています。 Stack Overflow:864633assigning-to-document-location-href-without-clobbering-history
私の質問: location.hrefプロセスがいつ完了したかを知る方法はありますか?
<script language="JavaScript"><!--
function windowOnLoad() {
setTimeout(function(){
location.href='/someurl/something.pdf'; //sometimes this is .doc file
},0);
setTimeout(function(){
location.href='/homepage';
},5000);
return false;
}
//-->
</script>