2016-08-16 9 views
1

を使用して、ウィンドウを閉じる前に終了する機能のためにが、私はあなたの助けが必要window.onbeforeunload

を待っている私が窓(IE 11)を閉じると、確認ボックスがポップアップし、私は[OK]ボタンをクリックしているようです関数は実行したいが、関数が終了する前にウィンドウを閉じる(レコードをDBに保存する)。ウィンドウを閉じる前に関数imts_save_changes()がDB操作を終了する機会を与えるように、コードをどのように変更できますか?ここで

は、マークアップです:

<!DOCTYPE html> 

<html> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

<style type="text/css"> 

</style> 

<script type="text/javascript"> 

window.onbeforeunload = function() { return test() } 

function test() { 

    if (confirm("would you like to run the last function before closing the window?")) { 

     imts_save_changes() 

     alert("record saved") 

    } 
} 

</script> 

</head> 

<body></body> 

</html> 

問題のコード:

window.onbeforeunload = function() { return test() } 

function test() { 

    if (confirm("would you like to run the last function before closing the window?")) { 

     imts_save_changes() 

     alert("record saved") 

    } 
} 
+0

ナビゲーションをキャンセルして、通常のメッセージでonbeforeunloadを使用するだけです。 – epascarello

+0

Javascriptではウィンドウを閉じることができません。これはセキュリティ機能です。マルウェアは、ユーザーがダメージを与えるまでウィンドウを開いたままにするために使用されます。 – Barmar

+0

@barmar HTAsはセキュリティについてあまり気にしません... – Teemu

答えて

2

あなたはonbeforeunloadイベントによってトリガーされるウィンドウを閉じるconfirmすると、それはすぐに閉じています。後続のアクションをキャンセルすることはできません(実際の締め切り)。この場合、保存されていない変更についてユーザーに警告し、操作を確認しない可能性があります。

私は100%確信していませんが、私はalertconfirm機能がDOMをフリーズするので、ユーザーとのやりとり前に何も起こらないと思います。

IMO、あなたはあなたのアプリのデザインを変更する必要があります。

関連する問題