Expand my Community achievements bar.

SOLVED

How to abort alloy "sendEvent" request(s)

Avatar

Level 4

Hi all, I have a situation where the activity map is being trigger when a visitor interacts with the navigation menu. ie menu opening up / showing sub menus. These are the links which have the following href="javascript:void(0);"

 

I would simply want to abort or cancel "sendEvent" requests programmatically (using example code snippets below). Now, the problem is that if you use something like the below in the callback, it results in rather ugly console log - example below. Could someone suggest a clean cut solution ? I know that ideally adobe would need to fix this issue, but I don't want to wait till it is done.

 

if (/^javascript:/.test(content.linkUrl)) {
  reject("Operation aborted");
}

// OR 

if (/^javascript:/.test(content.linkUrl)) {
  throw new Error("javascript: url");
}

Console error - using reject();

Franc_G_0-1728485788580.png

 

1 Accepted Solution

Avatar

Correct answer by
Level 4

@Parvesh_Parmar thanks for the above. 

The Web SDK configuration variable clickCollectionEnabled handles the automatic collection of Activity Map data. It is enabled by default unless explicitly disabled.

alloy("configure", {
  datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
  orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg",
  clickCollectionEnabled: true
});

 

So, any links (internal and external) will be tracked by default. The clickCollection can be configured further - clickCollection | Adobe Data Collection

 

In any case, I have found a very simple (and quite elegant solution). All you have to do is to reset the "content" in the click properties callback. This eliminates the console.log ever and prevents the data from being sent (default alloy.js configuration).

 

Quite happy, as I have fully working and fairly configurable activity map solution in place !

View solution in original post

3 Replies

Avatar

Community Advisor

Hello @Franc_G , 

 

If I understand correctly, the issue is that when a user interacts with the navigation menu (e.g., opening/closing submenus with links that have href="javascript:void(0);"), it triggers unnecessary sendEvent requests in AEP. You’re trying to abort or cancel these events programmatically, but using methods like reject() or throw new Error() results in unwanted error messages in the console.

I’ve reviewed the following documentation:

https://experienceleague.adobe.com/en/docs/experience-platform/web-sdk/commands/sendevent/overview

 

However, I'm not entirely sure how the sendEvent function is configured on your end. If it’s triggered by a click event, this issue can likely be resolved by managing the click event and preventing the sendEvent from being triggered unnecessarily.

Here’s a potential solution:

function handleClickEvent(content) {
  // Check if the linkUrl matches 'javascript:void(0);'
  if (/^javascript:void\(0\)/.test(content.linkUrl)) {
    // If the condition is met, simply return without sending the event
    return;
  }

  // If condition is not met, proceed to send the event
  alloy("sendEvent", {
    xdm: {
      eventType: "click",
      web: {
        webInteraction: {
          name: content.linkName,
          URL: content.linkUrl,
        },
      },
    },
  }).catch((error) => {
    console.error("Error while sending event:", error);
  });
}

 This approach handles the click event by checking if the href is javascript:void(0);. If it is, the function exits early, preventing the sendEvent from firing. Otherwise, the event is sent as expected.

 

Hope it will help you.

 

Kr,

Parvesh

 

Avatar

Correct answer by
Level 4

@Parvesh_Parmar thanks for the above. 

The Web SDK configuration variable clickCollectionEnabled handles the automatic collection of Activity Map data. It is enabled by default unless explicitly disabled.

alloy("configure", {
  datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
  orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg",
  clickCollectionEnabled: true
});

 

So, any links (internal and external) will be tracked by default. The clickCollection can be configured further - clickCollection | Adobe Data Collection

 

In any case, I have found a very simple (and quite elegant solution). All you have to do is to reset the "content" in the click properties callback. This eliminates the console.log ever and prevents the data from being sent (default alloy.js configuration).

 

Quite happy, as I have fully working and fairly configurable activity map solution in place !