Rumah > Soal Jawab > teks badan
function sync_data() { localStorage.setItem("syncDataClicked", true); location.reload(); } window.onload = function () { if (localStorage.getItem("syncDataClicked") === "true") { localStorage.removeItem("syncDataClicked"); sync_data('show'); } };
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <input type="submit" name="submit3" onclick="sync_data()" value="Sync data"> </body> </html>
Html: <input type="submit" name="submit3" onclick="sync_data()" value="Sync data"> JS: function sync_data() { window.onload = function () { setTimeout(function () { sync_data('show'); }, 5000); } }
Js ini tidak berfungsi. Selepas onclick dan muat semula halaman, saya perlu menambah pop timbul melalui fungsi sync_data(). Adakah terdapat sebarang penyelesaian. Saya telah mengemas kini menggunakan storan tempatan tetapi ia menunjukkan mesej pop timbul
P粉5174756702023-09-10 00:59:58
Fungsi window.onload anda sudah ada di dalam fungsi sync_data. Jadi window.onload tidak akan dicetuskan kerana halaman sudah dimuatkan apabila butang diklik. Jadi fungsi window.onload anda harus dilaksanakan sebelum fungsi sync_data dilaksanakan. Jadi dalam fungsi sync_data anda harus memasukkan bendera. Berdasarkan bendera ini, fungsi window.onload akan dicetuskan. Anda boleh menggunakan localStorage untuk menyimpan bendera. Inilah kod cadangan saya. Saya tidak pasti sama ada ia berfungsi. Saya menambah amaran pop timbul tersuai pada kod.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sync Data</title> <script> function sync_data() { localStorage.setItem("syncDataClicked", true); location.reload(); } window.onload = function () { if (localStorage.getItem("syncDataClicked") === "true") { localStorage.removeItem("syncDataClicked"); showPopup(); } }; function showPopup() { alert('Data synced!'); } </script> </head> <body> <input type="submit" name="submit3" onclick="sync_data()" value="Sync data"> </body> </html>
P粉9905682832023-09-10 00:04:19
Anda boleh menggunakan kod berikut:
function sync_data(string) { localStorage.setItem("syncDataClicked", string); location.reload(); } try{ if (localStorage.getItem("syncDataClicked")){ let popup = new Blob([localStorage.getItem("syncDataClicked")],{type: "text/html"}); let link = document.createElement("a"); let url = window.URL.createObjectURL(popup); link.href = url; link.target= "_blank"; link.click(); localStorage.removeItem("syncDataClicked"); } } catch (e) {console.log("It's the first time"); }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello</title> </head> <body> <input type="submit" name="submit3" onclick="sync_data('show')" value="Sync data"> </body> </html>