[CONF] How can I run some JS when the pagetree has finished loading?

I am writing a user macro and part of the code is going to target the active page in the page tree (which uses the {pagetree} macro) and apply some simple styling to it.

The code is as follows:

#set ($activePage = "#childrenspan$content.getIdAsString()-0")
<script type="text/javascript">   
    var AP = '${activePage}';

As you can see it's a mixture of VTL and JS - the VTL sets a variable and passes it to the JS, which is basically the ID for the current page in the page tree.

However, it is running before the page tree has loaded. This means that it's effectively returning nothing. If you run the code in the developer console after the page has finished loading then it works.

So the question is, how can I run some JS after the {pagetree} macro has finished loading?

3 answers

This widget could not be displayed.

Here I shall add a completely horrible hacky solution, in the hope that its sheer hackiness encourages somebody from Atlassian to suggest the correct way to do this!

Add a script at the end of your page HEAD:

var oldInit = AJS.toInit;

AJS.toInit = function(A) {
// Do some code of our own
var AP = '${activePage}';

Since this code runs before the pagetree plugin is invoked (in batch.js), we hijack the onInit function to add our own code to run at the end.

This widget could not be displayed.

As I can't edit my post, that should say "but it didn't have an effect".

This widget could not be displayed.

(can't seem to delete)

Suggest an answer

Log in or Sign up to answer
Atlassian Summit 2018

Meet the community IRL

Atlassian Summit is an excellent opportunity for in-person support, training, and networking.

Learn more
Community showcase
Posted Wednesday in Teamwork

What teamwork quotes inspire you?

Hey everyone! My name is Natalie and I'm an editor of the Atlassian Blog and I've got a question for you: What's your favorite quote about teamwork?  We've compiled a list here, along with...

129 views 16 7
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you