Javascript Functions Running Twice | Community
Skip to main content
August 25, 2017
Solved

Javascript Functions Running Twice

  • August 25, 2017
  • 15 replies
  • 7312 views

Hi all -

I'm fairly new to AEM, and have run into an interesting issue. The component I'm building is going to be a financial application that our users fill out. (Think along the lines of filling out an application at a bank to open up a new account.)

I've got a couple of Javascript files in the component, and everything was working great yesterday. Then, at some point, all of my JS functions started running twice. I have one function that logs a "Hello World" to the console when the page is loaded, and it logs that value twice. Same for my jQuery functions - anything that fires on a click runs twice.

I'm not sure what happened to cause this. Like I said, it worked correctly for a while. Any ideas on what might be causing this?

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by smacdonald2008

Can you try packaging up the app and all the dependencies and try to deploy to a clean install of AEM. Lets rule out an issue with the AEM instance first.

15 replies

smacdonald2008
August 25, 2017

Are you using ClientLibs to store the JS logic? If so - would they be loading twice somewhere?

August 25, 2017

Yes, I'm using ClientLibs to store my JS. Here's a shot of my project below. I'm not sure if/how they could be getting loaded twice. Where would I look to see if that's the case?

smacdonald2008
August 25, 2017

IN which file are you specifying the reference to the clientlib. Make sure that you only have this line once:

<sly data-sly-use.clientLib="/libs/granite/sightly/templates/clientlib.html" data-sly-call="${clientLib.js @ categories='<NAME OF CLIENT LIB>}"

August 25, 2017

Ok, I have that line in both my headlibs.html and footlibs.html files in my partials folder. Both files say that headlibs will only load the CSS, and that the footlibs will load the Javascript.

August 25, 2017

Should I take one of those mentions out? I'm not sure if that's the right way to fix the issue.

smacdonald2008
August 25, 2017

Yes, temove one and see what happens.

August 25, 2017

Ok, when I removed it in footlibs.html my JS no longer worked. It doesn't appear to have been loaded at all.

When I removed it in headlibs, my CSS wasn't loaded, and my JS functions still ran twice. =D

Putting both mentions back leads to CSS correct but JS functions still twice.

viveksachdeva
Community Advisor
Community Advisor
August 28, 2017

Can share sample package here?

VeenaVikraman
Community Advisor
Community Advisor
August 28, 2017

Can you share your code sample or you really need to check if you have the footlibs included in more than one place ?

Go to view source of your page and search for your clientlibs.js and see exactly how many includes do you have ?

August 28, 2017

I checked my source code, and I have 12 mentions of clientlibs.js:

<script type="text/javascript" src="/libs/social/commons/components/ugcparbase/clientlibs.js">

<script type="text/javascript" src="/libs/granite/ui/components/endor/clientlibs.js">

<script type="text/javascript" src="/libs/cq/gui/components/projects/admin/translation/customsearch/pathbrowser/tagspicker/clientlibs.js">

<script type="text/javascript" src="/libs/cq/gui/components/common/tagspicker/clientlibs.js">

<script type="text/javascript" src="/libs/cq/gui/components/authoring/dialog/policy/clientlibs.js">

<script type="text/javascript" src="/apps/granite/emailvalidation/clientlibs.js">

<script type="text/javascript" src="/libs/mobileapps/dps/gui/components/dpstext/clientlibs.js">

<script type="text/javascript" src="/libs/commerce/gui/components/common/productpicker/clientlibs.js">

<script type="text/javascript" src="/libs/commerce/gui/components/common/collectionpicker/clientlibs.js">

<script type="text/javascript" src="/libs/commerce/gui/components/common/assetpicker/clientlibs.js">

<script type="text/javascript" src="/libs/commerce/gui/components/authoring/editor/clientlibs.js">

<script type="text/javascript" src="/libs/commerce/gui/components/authoring/assetfinder/product/clientlibs.js">

Not sure if that's working correctly?