仮に開くのに3秒かかるページを用意します
// sample.php
PHP
1<?PHP
2sleep(3);
3print "opend";
普通に書くとwindow.openの完了をまちません
javascript
1<script>
2window.addEventListener('DOMContentLoaded', ()=>{
3 btn.addEventListener('click',()=>{
4 const start=new Date().getTime();
5 const w=window.open("sample.php","_blank");
6 setTimeout(()=>{
7 const end=new Date().getTime();
8 console.log((end-start)/1000); // 約1秒
9 },1000);
10 });
11</script>
12<input type="button" id="btn" value="btn">
windowのopenを待って処理したいならこう
javascript
1<script>
2window.addEventListener('DOMContentLoaded', ()=>{
3 btn.addEventListener('click',async()=>{
4 const start=new Date().getTime();
5 await new Promise(resolve=>{
6 const w=window.open("sample.php","_blank");
7 w.onload=()=>resolve();
8 });
9 setTimeout(()=>{
10 const end=new Date().getTime();
11 console.log((end-start)/1000); // 約4秒
12 },1000);
13 });
14});
15</script>
16<input type="button" id="btn" value="btn">
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/22 04:55