How much time can the browser dedicate to running JavaScript before moving on to loading a new page?

The webpage contains multiple hyperlinks.

I want to monitor user clicks on these links.

Whenever a user clicks on a link, an Ajax request is sent to my server for processing. The server then returns relevant data, which is further processed on the client side and used for statistical purposes.

All of this request handling and data processing takes a certain amount of time.

My practical question is: what is the expected duration for the browser to complete all these actions? Is there a time limit?

Currently, I have two options:

When a link is clicked, use JavaScript to return false, perform necessary functions, and then open the new window.

This approach helps to prevent browser delay issues.

Answer №1

If you'd like to make sure that the link isn't followed until your AJAX request has finished, you can opt for a synchronous request. Here's an example:

link.onclick = function () {
    var xhr = new XMLHTTPRequest(); // and the equivalents for other browsers

    xhr.open('GET', 'yourscript.cgi?data1=foo&data2=bar', false);
    // 'false' indicates a synchronous request

    xhr.send(); // the function won't return until the request is done

    // you can access the response data via xhr.responseText or xhr.responseXML
};

This method is a more dependable (and possibly quicker) approach to handling necessary notifications compared to waiting for a specific time duration.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Exploring the World of Observables within AngularJS

I've been experimenting with some exercises to grasp the inner workings of AngularJS, but I'm feeling a little lost at the moment. Despite scouring through the API, various documentation, and tutorials, I haven't quite found what I'm l ...

Using JQuery to toggle checkbox status after receiving an Ajax response

I am encountering a small issue with my code. I have a function that requires an AJAX call to load data on the page, which then populates checkboxes (which is working fine). My goal is for a checkbox to trigger an AJAX request when clicked, causing a valu ...

Tips for sending a property to a function that is imported and produces a component in React

I need help figuring out how to pass an argument back to my component library that is imported in a parent app as a dependency. The specific issue arises when I am trying to implement a brand concept in the theme object. The goal is to switch the theme bas ...

How can I update the color of a list item when it is clicked within a foreach loop using knockout js?

Currently, I am encountering an issue with changing the color when a user clicks on a list item using the latest version of knockout js. My goal is to change the color of a list item when it is clicked and maintain that color until another item is clicked, ...

Directus | The Revision is not being updated when a collection is created in Flows

I am currently working with the latest version 9 of Directus. I have set up a Data Model called "Article" with fields for title and Random_order. https://i.sstatic.net/3JcZ4.png https://i.sstatic.net/bRpBF.png I have created a Directus flow that upda ...

Using Ruby method with two render statements and handling JQuery AJAX call response

I currently have a set of methods in a controller that requires validation for each one. To streamline this process, I created a validation method within the application controller. My goal is to invoke this validation method at the beginning of each indi ...

Ensure that only numerical values in decimal form are permitted when entering data in Angular

How can I restrict user input to only decimal values? Here is the HTML code for my input field: <label for="conversion-factor">Conversion Factor:</label> <input type="text" class="form-control form-control-sm" id="conversion-factor" ...

What is the best way to transform a List<Pair<String, String>> to a List<String> using JavaScript?

Here is the data output structure: Map<String, List<Pair<String, String>>> "testdata": [ { "1.0": "True" }, { "1.1": "False" } ] ...

Ensuring the timely execution of Javascript functions with Selenium before moving on

While working on creating test cases using Selenium, I encountered an issue. In one of my test cases, there is a small form and a search button on the website I'm testing. Filling the form and clicking the button are not the problem. The issue arises ...

Upon initializing mean.io assetmanager, a javascript error is encountered

I am eager to utilize the MEAN.io stack. I completed all the necessary initialization steps such as creating the folder, performing npm install, and obtaining the required libraries. Currently, in server/config/express.js file, I have the following code: ...

Using nightwatch.js to verify elements across different parts of a webpage

Currently engaged in working with nightwatch.js and encountering an issue with a particular page file structure: sections: { table: { selector: '.sr-filterable-data-layout--collection', elements: { header: { ...

Pagination determined by the selections made in cascading dropdown menus

Does anyone know of a tutorial on implementing pagination that is specifically tailored to dependent drop lists? I've managed to display associated records based on a selection from a dropdown list with items like {Beavers, Cubs, Scouts, Venturers, Ro ...

Utilizing Node.js createReadStream for Asynchronous File Reading

For a specific project, I developed a module that is responsible for splitting files based on the '\r\n' delimiter and then sending each line to an event listener in app.js. Below is a snippet of the code from this module. var fs = req ...

The Express Validator is unable to send headers to the client once they have already been processed

I recently integrated express-validator in my Express JS project, but encountered a warning when sending invalid fields to my api: UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client This ...

Switching Perspective on Live ExpressJS Path -- Node.JS

I previously set up an express route with a template. Here's the code: app.get('/route', function route(req, res) { db.get('db_ID', function compileAndRender(err, doc) { var stream = mu.compileAndRender('theme-file.e ...

How can one check in JavaScript if a specific URL was targeted with a XMLHttpRequest?

While I am familiar with monitoring network traffic in the browser's development tools and having XMLHttpRequests shown in the console, I am curious if there is a specific window property that showcases all network activity at once? ...

"Why does Sequelize migration successfully create a table, yet the models are unable to establish a connection to the

I am currently learning how to use the Sequelize ORM in Node.js and save data in a PostgreSQL database. My primary objective is to insert user data into the Users table. I have successfully created the table using migration; however, I am encountering dif ...

The HTML changes are not reflected in the document.querySelectorAll function

Trying to select all the div elements within another div using document.querySelectorAll. Interestingly, when setting the height to 1000 in the JS, the browser's scrollbar adjusts accordingly (the balloons do not change size). What could I be doing in ...

Tips for creating a seamless merge from background color to a pristine white hue

Seeking a seamless transition from the background color to white at the top and bottom of the box, similar to the example screenshot. Current look: The top and bottom of the box are filled with the background color until the edge https://i.stack.imgur.com ...

Exploring the new features of utilizing buttons with the onClick method in the updated nextJS version 14.1.3

"implement customer" import React, { useState } from "react"; import { FaChevronLeft, FaChevronRight } from "react-icons/fa"; export default function HeroSlider() { const images = [ "/images/homepage/home-1.jpeg&qu ...