Search code examples
javascripthighchartshyperlinkwindowtarget

How do I open a new window / tab by clicking on a column / bar within a Highchart graph?


I'm hoping someone can help my create a Highcharts Graph that, when clicking the column / bar, a new window is opened up. Very much like the HTML equivalent of:

<a target="_blank">test</a>

I have managed to do this without creating a new window and I was hoping that someone might be able to tell me what I need to adjust to cater for a new window popup?

I have an example at jsfiddle

Which is Basically the following code:

$(function () {

    $('#container').highcharts({
        chart: {
            type: 'column'
        },
        title: {
            text: 'Title'
        },
        credits: {
            enabled: false
        },
        xAxis: {
            categories: ["category_1", "category_2", "category_3", "category_4"],
            crosshair: true
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Count'
            }
        },
        tooltip: {
            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
            pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                    '<td style="padding:0"><b>{point.y:.1f}</b></td></tr>',
            footerFormat: '</table>',
            shared: true,
            useHTML: true
        },
        legend: {
            labelFormatter: function () {
                var total = 0;
                for (var i = this.yData.length; i--; ) {
                    total += this.yData[i];
                }
                ;
                return 'Total: ' + total;
            },
            align: 'right',
            verticalAlign: 'top',
            x: -40,
            y: 60,
            floating: true
        },
        plotOptions: {column: {pointPadding: 0.2, borderWidth: 0, dataLabels: {enabled: true}}, },
        series: [{
            name: 'Live Trial Lead Sources',
            data: [{"y":111,"url":"http:\/\/www.google.ie"},{"y":44,"url":"http:\/\/www.google.ie"},{"y":22,"url":"http:\/\/www.google.ie"},{"y":10,"url":"http:\/\/www.google.ie"}],
            cursor: 'pointer',
            point: {
                events: {
                    click: function () {
                        location.href = this.options.url;
                    }
                }
            }
        }]
    });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

I thought it might be something like the following which is wrong:

[{"y":111,"url":"http:\/\/www.google.ie","target"=>"_blank"} ...

Thanks in advance.


Solution

  • In series.point.events.click you can switch your statement:

    location.href = this.options.url;
    

    With (update JSFiddle):

    window.open(this.options.url, '_blank');
    

    Which will then open the URL in a new window.