Dashboards & Visualizations

Simple XML: How to call a JavaScript function from the HTML panel?

Builder

I would like to call a JavaScript function defined in application.js when the user clicks a link in a Simple XML dashboard. I have the following code:

<html>
   <p>Click on a row in the table to get more information.</p>

   <p><a href="javascript:void(0);" onClick="toggleHidden('Explanation');">Explanation of the data in the table</a></p>

This does not work because the parameters of the a tag are stripped. Using Chrome Developer Tools I see that it looks like this when the page has been loaded:

<html>
   <p>Click on a row in the table to get more information.</p>

   <p><a href="">Explanation of the data in the table</a>

The same code works perfectly when included like this:

<html src="process_detail_explanation.html">
</html>

Is this a bug or by design? I could not find it documented anywhere.

SplunkTrust
SplunkTrust

This is by design to prevent XSS attacks, and other malicious intents. BUT - there is a way to do this!

Note : In Splunk 6.X application.js is not loaded automatically. Instead, use dashboard.js.

require(['jquery'],
function($){
    $('#explanation_control').click(function() {
            $("#Explanation").slideToggle( { direction: 'down'}, 500);
    });
}
 );

And you need to update your a to this:

<a href="#" id="explanation_control">Explanation of the data in the table</a>

SplunkTrust
SplunkTrust

Did this help you? Please accept the answer if so.

0 Karma

Splunk Employee
Splunk Employee

Why not add the listener to application.js?

0 Karma

Path Finder

Did you ever find a solution to this? I'm having the same issue.

0 Karma