Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menambah pop timbul selepas muat semula halaman menggunakan javascript onclick

  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粉921130067P粉921130067380 hari yang lalu496

membalas semua(2)saya akan balas

  • P粉517475670

    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>

    balas
    0
  • P粉990568283

    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>

    balas
    0
  • Batalbalas