For the time being you can use the following workaround:
1) Either hide the chart with visibility:hidden instead of display:none
2) Or use the following workaround:
<div id="div1" style="display: none;">
<telerik:RadHtmlChart runat="server" ID="ColumnChart1" Width="600px" Height="400px">
<PlotArea>
<Series>
<telerik:ColumnSeries Name="Product 1">
<SeriesItems>
<telerik:CategorySeriesItem Y="1" />
<telerik:CategorySeriesItem Y="2" />
<telerik:CategorySeriesItem Y="3" />
</SeriesItems>
</telerik:ColumnSeries>
</Series>
</PlotArea>
</telerik:RadHtmlChart>
</div>
<input type="button" onclick="showChart(); return false;" value="Show Chart" />
<script>
Telerik.Web.UI.RadHtmlChart.prototype._getMainConfig = function () {
var that = this;
//when visible is false - nothing is sent from the server to save transferred data
//e.g - there are properties set but visible is false - we do not need to send those properties amyway
//that is why - set visible: false when nothing is sent from the server
that._options = $telerik._getPropertiesParameter(that, that.constructor);
that._cleanUpConfigProperties();
that._options["theme"] = that.get_skin();
//that._options["visible"] = $(that.get_element()).is(':visible');
that._options["title"] = that._chartTitle ? that._parseObject(that._chartTitle) : { visible: false };
that._options["legend"] = that._legend ? that._parseObject(that._legend) : { visible: false };
if (that._chartArea) {
that._options["chartArea"] = that._parseObject(that._chartArea);
}
if (that._isSparklineChart()) {
that._setMinimumSparklineWidth();
}
if (that._plotArea) {
that._configurePlotArea();
}
if (that._series) {
/*jshint evil: true */
that._options["series"] = eval(that._series);
/*jshint evil: false */
}
if (that._isStockChart()) {
that._configureStockChart();
}
}
</script>