We use tested this on an
iPad pro iOS Version 12.1.3,
iPad pro iOS Version 12.1.4,
iPhone 7 iOS Version 12.1.3,
iPhone Xs iOS Version 12.1.3,
iPhone Xs iOS Version 12.1.4
always with Safari.
Here is the Link to the demo Page http://dev.uniserve.de (Using chart.destroy()).
Here is the Link to the demo Page http://dev.uniserve.de/test2.html (Using new chart object).
To force the problem there are a the Buttons
Here is the Code of an sample page :
<html>
<head>
<script>
var renderNumber = 0;
var chart ;
window.onload = function () {
chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
exportEnabled: true,
theme: "light1", // "light1", "light2", "dark1", "dark2"
title:{
text: "Render Test"
},
data: [{
type: "column", //change type to bar, line, area, pie, etc
//indexLabel: "{y}", //Shows y value on all Data Points
indexLabelFontColor: "#5A5757",
indexLabelPlacement: "outside",
dataPoints: [
{ x: 10, y: 71 },
{ x: 20, y: 55 },
{ x: 30, y: 50 },
{ x: 40, y: 65 },
{ x: 50, y: 92, indexLabel: "Highest" },
{ x: 60, y: 68 },
{ x: 70, y: 38 },
{ x: 80, y: 71 },
{ x: 90, y: 54 },
{ x: 100, y: 60 },
{ x: 110, y: 36 },
{ x: 120, y: 49 },
{ x: 130, y: 21, indexLabel: "Lowest" }
]
}]
});
chart.render();
}
function rerenderChart(number) {
chart.destroy();
if (number == null)
{
renderNumber = renderNumber + 1;
number = renderNumber;
}
chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
exportEnabled: true,
theme: "light1", // "light1", "light2", "dark1", "dark2"
title:{
text: "Render " + number
},
data: [{
type: "column", //change type to bar, line, area, pie, etc
//indexLabel: "{y}", //Shows y value on all Data Points
indexLabelFontColor: "#5A5757",
indexLabelPlacement: "outside",
dataPoints: [
{ x: 10, y: 71 },
{ x: 20, y: 55 },
{ x: 30, y: 50 },
{ x: 40, y: 65 },
{ x: 50, y: 92, indexLabel: "Highest" },
{ x: 60, y: 68 },
{ x: 70, y: 38 },
{ x: 80, y: 71 },
{ x: 90, y: 54 },
{ x: 100, y: 60 },
{ x: 110, y: 36 },
{ x: 120, y: 49 },
{ x: 130, y: 21, indexLabel: "Lowest" }
]
}]
});
chart.render();
}
function rerenderChart10() {
for (var i = 1; i <= 10; i++) {
setTimeout(rerenderChart(),50000);
}
}
function rerenderChart100() {
for (var i = 1; i <= 100; i++) {
setTimeout(rerenderChart(),50000);
}
}
</script>
</head>
<body>
<div id="chartContainer" style="height: 80%; width: 100%;"></div>
<div id="refreshPanel"><button onclick="rerenderChart()">Rerender once</button>
<button onclick="rerenderChart10()">Rerender 10times</button>
<button onclick="rerenderChart100()">Rerender 100times</button></div>
<script src="https://cdn.canvasjs.com/canvasjs.min.js"></script>
</body>
</html>
We have the latest version 2.3 installed, no change.
The error also occurs on your demo page if you leave many diagrams on one page (> 50).
Is it possible to clear the Canvas memory on iOS device?