実現したいこと
- ページ離脱時とページ更新時に、関数を実行したいです。
- 現在はページ更新時と離脱時に関数が実行さますが、タイミングが”ページ離脱時のホップアップが出る直前”なので、実質的に離脱するしないに関わらず実行されてしまいます。
前提
JavaScriptでページ離脱するときに動作するコードを書いています。
現在はページ更新時と離脱時に関数が実行さますが、タイミングが”ページ離脱時のホップアップが出る直前”なので、実質的に離脱するしないに関わらず実行されてしまいます。
離脱するときのみに動作させたいです。
該当のソースコードその1
fetchの先は伏字***にしています。
JavaScript
1// DummyList 2var path = ["a.txt", "b.txt", "c.txt"]; 3 4// Add beforeunload event 5window.addEventListener("beforeunload", (event) => { 6 // Cancel the event as stated by the standard. 7 event.preventDefault(); 8 // Chrome requires returnValue to be set. 9 event.returnValue = ""; 10 11 // Execute func() 12 func(); 13}); 14 15// Func 16function func() { 17 console.log("runfunc"); 18 let queryString = path 19 .map((ele) => `FilePath=${encodeURIComponent(ele)}`) 20 .join("&"); 21 fetch( 22 `*****&${queryString}` 23 ); 24}
該当のソースコードその1に対して試したこと
-
ページを開いてF5
=>func()が実行された
=>ページ離脱確認のホップアップが表示された。
=>Yesを押すとページが更新された。 -
ページを開いてCtrl+W
=>func()が実行された
=>ページ離脱確認のホップアップが表示された。
=>Yesを押すとページを離脱した。
該当のソースコードその2
fetchの先は伏字***にしています。
JavaScript
1// DummyList 2var path = ["a.txt", "b.txt", "c.txt"]; 3 4// Add beforeunload event 5window.addEventListener("unload", (event) => { 6 // Cancel the event as stated by the standard. 7 // event.preventDefault(); 8 // Chrome requires returnValue to be set. 9 // event.returnValue = ""; 10 11 // Execute func() 12 func(); 13}); 14 15// Func 16function func() { 17 console.log("runfunc"); 18 let queryString = path 19 .map((ele) => `FilePath=${encodeURIComponent(ele)}`) 20 .join("&"); 21 fetch( 22 `*****&${queryString}` 23 ); 24}
該当のソースコードその2に対して試したこと
- ページを開いてCtrl+W
=>func()が実行されずにページを離脱した。
JSのイベントの設定がおかしいのだろうと検討をつけつつ、にっちもさっちも行かないので質問いたしました。
助言をいただければ助かります。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/20 14:04