Maison  >  Questions et réponses  >  le corps du texte

Comment ajouter une fenêtre contextuelle après le rechargement de la page en utilisant 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);
    }
    }

Ce js ne fonctionne pas. Après le clic et le rechargement de la page, je dois ajouter une fenêtre contextuelle via la fonction sync_data(). Y-a-t'il une solution. J'ai mis à jour en utilisant le stockage local mais un message contextuel s'affiche

P粉921130067P粉921130067380 Il y a quelques jours498

répondre à tous(2)je répondrai

  • P粉517475670

    P粉5174756702023-09-10 00:59:58

    Votre fonction window.onload est déjà dans la fonction sync_data. Ainsi, window.onload ne sera pas déclenché car la page est déjà chargée lorsque vous cliquez sur le bouton. Votre fonction window.onload doit donc être exécutée avant l'exécution de la fonction sync_data. Donc, dans la fonction sync_data, vous devez inclure l'indicateur. Sur la base de cet indicateur, la fonction window.onload sera déclenchée. Vous pouvez utiliser localStorage pour stocker les indicateurs. Voici mon code suggéré. Je ne sais pas si cela fonctionne. J'ai ajouté l'alerte contextuelle personnalisée au code.

    <!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>

    répondre
    0
  • P粉990568283

    P粉9905682832023-09-10 00:04:19

    Vous pouvez utiliser le code suivant :

    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>

    répondre
    0
  • Annulerrépondre