使用移动设备时如何在不移动当前窗口的情况下获取导出的图像

时间:2013-04-05 15:04:09

标签: highcharts

我正在使用Highcharts将数据绘制为不同的图形。

如您所知,如果我在HTML文档中添加exports.js文件,

然后它会在Highcharts'画布

中的右上区域显示一个小按钮

使用智能手机时会出现当前问题。

当我尝试导出当前图表时,当前浏览器窗口将关闭。

我可以下载该文件,但之前的窗口已经消失。

如何修改Highcharts?

当我点击其中一个导出选项时,我想打开新窗口。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我在iOS设备上发现了这个问题。然而,有一个非常简单的解决方法。默认情况下,highcharts会创建隐藏的<form>元素,并将数据提交给导出服务器。我们在这里可以做的是指定表单的目标属性。

所以,这是一个替代默认Highcharts导出模块的插入式修复程序(只是在export.js之后放置)

Highcharts.post = function (url, data) {
    var createElement = Highcharts.createElement,
        discardElement = Highcharts.discardElement,
        name,
        form;

    // create the form
    form = createElement('form', {
        method: 'post',
        action: url,
        enctype: 'multipart/form-data',
        target: '_blank'
    }, {
        display: 'none'
    }, document.body);

    // add the data
    for (name in data) {
        createElement('input', {
            type: 'hidden',
            name: name,
            value: data[name]
        }, null, form);
    }

    // submit
    form.submit();

    // clean up
    discardElement(form);
};

在这里,您可以找到一个有效的演示:http://jsfiddle.net/dWfv5/

答案 1 :(得分:1)

自Highcharts 3.0.8(2014-01-09)以来,您可以将目标设置为选项,因此您不需要插入式修补程序。

将目标指定为exporting.formAttributes的一部分,如下所示:

    exporting: {
        formAttributes: {
            target: '_blank'
        }
    }

http://jsfiddle.net/highcharts/dWfv5/4/

的现场演示