Javascript jQuery移动对象保留在内存中
我目前正在开发jQuery移动应用程序。在一个页面上创建了一个图表(highcharts),然后可以将其导出(canvg和canvas2ImagePlugin)。但是,我注意到图表对象保留在内存中。这样做的效果是,如果页面被多次打开,然后按下导出按钮,所有先前生成的图形都将被导出Javascript jQuery移动对象保留在内存中,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我目前正在开发jQuery移动应用程序。在一个页面上创建了一个图表(highcharts),然后可以将其导出(canvg和canvas2ImagePlugin)。但是,我注意到图表对象保留在内存中。这样做的效果是,如果页面被多次打开,然后按下导出按钮,所有先前生成的图形都将被导出 查看chromedev工具的堆快照后,我注意到所有对象都保留在内存中。为了演示这一点,我在JSFIDLE上制作了一个非常基本的应用程序,保留了所有highchart和canvg代码:-->只需单击按钮转到第二页。如果单
查看chromedev工具的堆快照后,我注意到所有对象都保留在内存中。为了演示这一点,我在JSFIDLE上制作了一个非常基本的应用程序,保留了所有highchart和canvg代码:-->只需单击按钮转到第二页。如果单击“导出”按钮,将打开一个弹出窗口。但是,如果您返回第一页,然后再返回第二页并再次单击按钮,将打开两个弹出窗口(您可能需要允许弹出窗口) 我还尝试将analyseGraph设置为null或undefined,或者在pagebeforehide上使用.remove(),但没有帮助 谢谢你的帮助 下面是本例的代码:
HTML:
<div data-role="page" id="p1">
<div data-role="header"><h1>Header Page 1</h1></div>
<div data-role="content">
<p>Page 1</p>
<a href="#p2" data-role="button">Go To Page 2</a>
</div>
</div>
<div data-role="page" id="p2">
<div data-role="header" data-rel="back"><h1>Header Page 2</h1></div>
<div data-role="content">
<p>Page 2</p>
<a href="#p1" data-role="button">Go To Page 1</a>
<a id="export_graph" data-role="button" style="max-width: 300px;" data-mini="true">Export</a>
</div>
</div>
每次显示第2页时,都会将单击事件绑定到文档。所以我想你必须偶尔用“off”,比如
$(document).on('pagebeforeshow', '#p2', function (){
var Graph = function (){
this.drawGraph = function(){};
this.exportCanvas = function(){
window.open();
};
}
var analyseGraph = new Graph();
analyseGraph.drawGraph();
$(document).on('click', '#export_graph', function(){
analyseGraph.exportCanvas();
});
});
$(document).on('click', '#export_graph', function(){
analyseGraph.exportCanvas();
$(document).off('click');
});