Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

Close HTML item

Hi all,

I've made a little distractor task for a retention interval in HTML with an inline HTML item, but I can't get it to move on after it's finished. I've included a minimal example in the post. When the time runs out, it should set vars.game_over to 1. The task runs inside a loop that's set to break if [game_over] == 1. Instead, after the timer reaches zero it just carries on.

Is there a way to close an HTML item after a certain amount of time so the experiment can move on?

Thanks in advance,

Joel

<!DOCTYPE html>

<html>

<body>


<div id="gameDiv">

  <h2>Number Guessing Game</h2>

  <button type="button" onclick="playGame()">Start Game</button>

  <p id="message"></p>

</div>


<script>

// Prepare phase

var gameIsOver = false;

var timeLeft = 5; // Time left in seconds for simplicity


// Create an object called vars with a property game_over

var vars = {

  game_over: 0 // Initially set to 0

};


// Game logic

function playGame() {

  document.getElementById("message").innerHTML = "Game started. You have " + timeLeft + " seconds.";

  // Call the run function every second to check the game status

  var intervalId = setInterval(run, 1000);

}


// Run phase

function run() {

  // Update the timer

  timeLeft--;

  if (timeLeft > 0) {

    document.getElementById("message").innerHTML = "Time left: " + timeLeft + " seconds";

  } else {

    // End the current item and move on to the next one

    document.getElementById("message").innerHTML = "Time's up! Game over.";

    gameIsOver = true; // Set the game over flag

    vars.game_over = 1; // Set vars.game_over to 1 when the game is over

  }

}


</script>


</body>

</html>

Comments

  • Hi @joelsolo99,

    This is really more an issue of HTML programmnig than something related to Open Sesame. You should be able to close the HTML page by using the window.closed() function.

    Here's a modified version of your code that closes the window at the end of the 5 seconds interval. I tried it out with Chrome and Edge and it worked. However, keep in mind that some browser might not close the window if their security settings restrict it.

    <!DOCTYPE html>

    <html>

    <body>


    <div id="gameDiv">

     <h2>Number Guessing Game</h2>

     <button type="button" onclick="playGame()">Start Game</button>

     <p id="message"></p>

    </div>


    <script>

    // Prepare phase

    var gameIsOver = false;

    var timeLeft = 5; // Time left in seconds for simplicity


    // Create an object called vars with a property game_over

    var vars = {

     game_over: 0 // Initially set to 0

    };


    // Game logic

    function playGame() {

     document.getElementById("message").innerHTML = "Game started. You have " + timeLeft + " seconds.";

     // Call the run function every second to check the game status

     var intervalId = setInterval(run, 1000);

    }


    // Run phase

    function run() {

     // Update the timer

     timeLeft--;

     if (timeLeft > 0) {

      document.getElementById("message").innerHTML = "Time left: " + timeLeft + " seconds";

     } else {

      // End the current item and move on to the next one

      document.getElementById("message").innerHTML = "Time's up! Game over.";

      gameIsOver = true; // Set the game over flag

      vars.game_over = 1; // Set vars.game_over to 1 when the game is over

      closeWindow(); // Call function to close the window

     }

    }


    // Function to close the window

    function closeWindow() {

     window.close();

    }


    </script>


    </body>

    </html>

    Hope this helps,

    Fabrice.

    Buy Me A Coffee

  • Hi Fabrice,

    Thank you for your help. Unfortunately using window.close() actually closes the tab rather than move the experiment on to the next item. I've also tried using 'return;' but nothing happens. I am quite new to HTML so I wasn't sure if this was an HTML or an OSWeb issue.

    Thanks again,

    Joel

Sign In or Register to comment.