简体   繁体   English

使用JavaScript在按钮中使用HTML5下载选项

[英]Use of HTML5 download option in button using javascript

I want to write a Javascript function which downloads json file by adding variables into it. 我想编写一个Javascript函数,通过向其中添加变量来下载json文件。 Something like this https://jsfiddle.net/cowboy/hHZa9/ 像这样的东西https://jsfiddle.net/cowboy/hHZa9/

var obj = {a: 123, b: "4 5 6"};
var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj));

$('<a href="data:' + data + '" download="data.json">download JSON</a>').appendTo('#container');

But now I want replace anchor tag with button. 但是现在我想用按钮替换锚标签。 I am using ExtJS 6. 我正在使用ExtJS 6。

You can use Extjs button like this: 您可以这样使用Extjs按钮:

var obj = {
        a: 123,
        b: "4 5 6"
    },
    data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj));

Ext.widget('button', {
    renderTo: Ext.getBody(),

    text: 'Download',

    href: 'data:' + data,

    autoEl: {
        tag: 'a',
        download: 'data.json'
    }
});

Working example: https://fiddle.sencha.com/#fiddle/1chg 工作示例: https : //fiddle.sencha.com/#fiddle/1chg

You can do two things.. 您可以做两件事。

  1. Style your a tag so that it looks like a button . a标签进行样式设置,使其看起来像一个button

  2. Put a button inside the a tag 把一个button里面a标签

     $('<a href="data:' + data + '" download="data.json"><button>download JSON</button></a>').appendTo('#container'); 

as button does not have a download attribute so you need to use the a tag. button没有一个download属性,所以你需要使用a标签。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM