2017-12-15 2 views
0

私はonbeforeunloadを私のプロジェクトで使用しています。ただし、ユーザーがリンクをクリックしてレポートをダウンロードできるセクションがあります。 window.locationがトリガーされる前に、私はwindow.onbeforeunload = nullを設定して、そのユーザーはアラート/確認ボックスを表示せずに、出かけるか滞在するか質問します。レポートをクリックしてブラウザを閉じるとファイルをダウンロードすると問題が発生しますonbeforeunloadが再びトリガされません。レポートをダウンロードした後に私はどのようにonbeforeunloadをトリガーできますか?ここに私の関数の例である:window.locationがページをリロードした後にonbeforeunloadをアクティブにする方法は?

function getReport(){ 
    var fileName = $(this).prop('id'), 
    param = 'rptFile=' + fileName; 

    try{ 
     window.onbeforeunload = null; 
     window.location = '/'+pathname+'/APPS/entry.cfm?idx=5&' + param; 
    }catch(err){ 
     alert("An error occurred retrieving the file."); 
    } 
}; 

私はentry.cfmをリロードしています私のメインページには、私は機能をonbeforeunloadいるdocument.ready機能を持っています。レポートがwindow.locationでダウンロードされると、その後、onbeforeunloadはbrが再びトリガーされることを期待しました。だから、私が何か間違っているのか、それともJSではできないのか分かりません。ここでentry.cfm例です:

$(document).ready(function() { 
    window.onbeforeunload = function() { 
     return 'Are you sure you want to leave?'; 
    } 
}); 

誰もが再びonbeforeunloadトリガする方法を知っている場合は私に知らせてください。ありがとうございました!

+0

は、ときに、ユーザーのダウンロードレポート...彼らはその後、onbeforeload再び私は再びonbeforeunload接続する方法を疑問に思ったものだ –

+0

@KresimirPendicを添付しなかったかどうかを知るために、クッキーやのlocalStorageにいくつかのフラグを置きますか?私はdocument.readyにそのトリックを行うことを望んでいた。 –

+0

[これはあなたに役立つかもしれません](https://www.w3schools.com/jsref/event_onbeforeunload.asp)、また、ウィンドウをリロードする代わりに、レポートをダウンロードするために新しいウィンドウを開くか、iframeを使用するのはなぜですか? –

答えて

1

これは動作しません。nullwindow.onbeforeunloadwindow.locationwindow.openに変更すると、新しいタブでレポートを開くことができます。

function getReport() { 
 
    try { 
 
    window.open('https://via.placeholder.com/350x150/ee5533', '_blank'); 
 
    } catch (err) { 
 
    alert("An error occurred retrieving the file."); 
 
    } 
 
}; 
 

 

 
window.onbeforeunload = function() { 
 
    return 'Are you sure you want to leave?'; 
 
} 
 

 
$('.dwl').on('click', getReport);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a class="dwl">Try to download in new tab</a>

+1

これはクレスマーです!ご協力いただきありがとうございます。私は、リンクをクリックすると、新しいウィンドウが1秒間ジャンプしてレポートがダウンロードされるため、ユーザーは混乱しないことを願っています。 –

関連する問題