我需要在Highcharts导出模块的exportChart方法中设置资源对象,但似乎无法覆盖它。
导出模块源代码位于http://code.highcharts.com/modules/exporting.src.js,我覆盖的特定子部分如下所示:
'use strict';
(function (factory) {
if (typeof module === 'object' && module.exports) {
module.exports = factory;
} else {
factory(Highcharts);
}
}(function (Highcharts) {
(function (H) {
// create shortcuts
var Chart = H.Chart,
merge = H.merge,
extend = H.extend;
//... Removed extra code not needed for example
extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
exportChart: function (exportingOptions, chartOptions) {
var svg = this.getSVGForExport(exportingOptions, chartOptions);
// merge the options
exportingOptions = merge(this.options.exporting, exportingOptions);
// do the post
H.post(exportingOptions.url, {
filename: exportingOptions.filename || 'chart',
type: exportingOptions.type,
// IE8 fails to post undefined correctly, so use 0
width: exportingOptions.width || 0,
scale: exportingOptions.scale,
svg: svg
}, exportingOptions.formAttributes);
}
//... Removed extra code not needed for example
});
//... Removed extra code not needed for example
}(Highcharts));
}));
要测试覆盖方法的能力,我使用以下代码:
(function (H) {
var Chart = H.Chart,
extend = H.extend;
extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
exportChart: function (exportingOptions, chartOptions) {
alert('changed it');
}
});
}(Highcharts));
警报永远不会触发,而是正常的导出仍在发生。
我在这里创建了一个显示此问题的JSFiddle:https://jsfiddle.net/j005v79j/
有谁能告诉我为什么覆盖这种方法不起作用?
答案 0 :(得分:0)
我意识到我还在我身边加载了code.highcharts.com/modules/offline-exporting.js,这不是小提琴。此脚本覆盖导出按钮以使用名为exportChartLocal()的其他方法。由于按钮现在绑定到一个永远不会被调用的方法,因此我的警报没有被触发。
我现在已经删除了对离线导出的调用,并会在以后的日期将代码覆盖到我的代码中。
感谢@Kamil指出了这个问题。