Is there a way to stop WhatsApp Web from launching in a new tab if another WhatsApp Web tab is already open?

How can I prevent the WhatsApp Web URL from opening in a new tab if there is already a WhatsApp Web tab open?

const msg = "*Greetings From "+this.previewData.unit_name+" "+this.previewData.unit_location+"* ";
const full = `${msg}\nPlease click the link below to get your receipt. \n ${url}`;
const whatsappUrl =  "https://web.whatsapp.com:/send?text=" + encodeURIComponent(full);
window.open(whatsappUrl, '_blank');

Answer №1

One way to prevent a window from opening again on the second trigger is by using a local variable to store the reference. This ensures that the window is not opened repeatedly.

const message = "Greetings From "+this.previewData.unit_name+" "+this.previewData.unit_location+" ";
const fullMessage = `${message}\nPlease click the link below to get your receipt. \n ${url}`;
const whatsappLink =  "https://web.whatsapp.com:/send?text=" + encodeURIComponent(fullMessage);
let windowReference = null;
if(!windowReference) {
    windowReference = window.open(whatsappLink, '_blank');
}

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

Using Angular to link Google Places API responses to a form: a guide on merging two different length objects with a shared key

I'm struggling with a key concept here regarding displaying the results of a places autocomplete query. I want to replace the types[0] name with more familiar terms such as suburb or city instead of sublocality_level_1 or administrative_area_level_1 ...

Having trouble starting up my Angular application using ng serve

click here to view image Greetings! I am facing difficulties in building and running my Angular application. Despite reinstalling angular/cli, node.js, and removing all global node modules packages, the issue persists. ...

Tips for developing a personalized form validator for validating JSON data exclusively in Angular

Within my Angular application, there exists a reactive form that has a single control known as configJson, which is visually represented by a <textarea> element in the DOM. The primary goal is to validate this specific form control to ensure that it ...

"Angular EventEmitter fails to return specified object, resulting in undefined

As I work on a school project, I've encountered a hurdle due to my lack of experience with Angular. My left-nav component includes multiple checkbox selections, and upon a user selecting one, an API call is made to retrieve all values for a specific " ...

Transferring information using TypeScript

My issue arises when transferring data from HTML in the following format Karbohidrat :{{karbohidrat}} <button ion-button (click)="cekHalamanMakanan('karbohidrat')">View carbohydrate foods</button> <br> Then, I retrieve the kar ...

Create a custom data structure resembling a record, where certain keys are assigned specific value types

My objective is to establish a custom type resembling a record, where certain keys are designated for specific value types. The proposed object would look something like this: const o: TRec = { text: "abc", width: 123, height: 456, //...an ...

Send the user to an Angular route once they have successfully authenticated with Google

I'm facing an issue with redirecting users to an Angular route. Here's the scenario: When I'm on the login page and click on Google login, I get redirected to Google for authentication. After successfully logging in, I want to be redirecte ...

Using HTTP POST to subscribe and implementing a try-catch block

When using Angular2's http.post, I encountered an issue where the headers were not sent to the CORS server. To address this, I attempted to create a loop that would retry the request until it succeeds. However, this resulted in an endless loop. How ca ...

Tips for monitoring dispatch in fetch/middleware functions

Just testing a basic webpage <template> <HomeTemplate /> </template> <script lang="ts"> import Vue from 'vue' export default Vue.extend({ async fetch(context) { // or middleware(context) await context.store.disp ...

Adding extra information to a property or array in Firebase

The following code snippet demonstrates how to create an array of event objects using observables. eventsRef: AngularFireList<any>; events: Observable<any>; this.eventsRef = db.list('events'); this.events = this.eventsRef.snapshotC ...

Resolving problem in React component: TypeScript error - Unable to find property 'type' on 'string' type

In my React typescript component, I have defined a custom block that filters and displays data: type CustomTeaser = Exclude<Teaser, TeaserThree>; const MyCustomBlock = ({ customItems }: Props) => { const sixGridData = { items: customItems as Cu ...

What steps should I follow to properly set up my tsconfig.json in order to ensure that only the essential files are included when executing npm run build

Introduction I am seeking guidance on how to correctly set up my tsconfig.json file to ensure only the necessary files are included when running npm run build for my projects. I want to avoid any unnecessary files being imported. Query What steps should ...

Exporting Javascript functions is not possible

Programming in TypeScript import { Component, OnInit } from '@angular/core'; import {loadCalendar} from '../../../../scripts/artist/artist-home'; import {activate_searchBar} from '../../../../scripts/search_bar_activate'; @C ...

Is there a way for me to add a clickable link within a tooltip?

In my title, I want to insert a clickable link like 'Link' or 'a'. The title is ready for any string you input. <MaterialSwitch title={CLICKABLE STRING HERE} /> ...

An array becomes undefined once the previous array is removed

Consider the following code snippet: using the splice method, a specific item from Array1 is retrieved and stored in a variable called Popped. Next, Popped is added to array2. However, if we then delete the value from Popped, why does array2 become undef ...

Error message: Unable to locate module when utilizing my alternative library packaged with Rollup

Currently, I am utilizing rollup to package a UI library for use across various primary applications. However, the bundled ESM file contains imports that are incompatible with webpack in the main applications: import { ArrowDropDownCircleOutlined } from &a ...

Combining Playwright and Cucumber for Seamless Integration

I am seeking guidance on integrating Playwright with Cucumber. What is the reason for using a Cucumber.js file instead of a Playwright.config.js file to set up the paths for Cucumber feature files and step definitions? If it's possible, How can we spe ...

Inactive function

I have a function that inserts my articles and I call this function on my page. There are no errors, but the next function retrieveAllArticles() is not being executed. public saveAllArticles(article) { for(let data in article) { this.db.exec ...

Understanding the operator of index type queries and the utility of the extends keyword

While reviewing the documentation on Advanced Types in Typescript, I came across an interesting concept known as the Index Query Operator. The documentation can be found here: https://www.typescriptlang.org/docs/handbook/advanced-types.html. One example pr ...

How do AppComponent and @Component relate to each other in AngularJs 2?

Recently, I came across the file app.component.ts in Example and found some interesting code. The link to the example is: here. Here's a snippet of the code: import { Component } from '@angular/core'; export class Hero { id: number; na ...