Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript创建、激发锚定标记并移除它_Javascript_Jquery_Html - Fatal编程技术网

Javascript创建、激发锚定标记并移除它

Javascript创建、激发锚定标记并移除它,javascript,jquery,html,Javascript,Jquery,Html,在我的页面中,我有一个下载按钮,可以将屏幕内容下载到CSV文件中 CSV文件由Javascript中的另一个函数基于我的网格数据生成 我用来生成数据的代码是基于 一切都很好,只是我不想在我的屏幕上有一个标签,而是一个样式化的按钮。我在那个地方也没有表格。只是一个普通的按钮 所以,我必须在运行中创建,启动它,然后删除它 这是我的密码: <button type='button' onclick='buttonClicked(); return false;' class='btn btn-p

在我的页面中,我有一个下载按钮,可以将屏幕内容下载到CSV文件中

CSV文件由Javascript中的另一个函数基于我的网格数据生成

我用来生成数据的代码是基于

一切都很好,只是我不想在我的屏幕上有一个标签,而是一个样式化的按钮。我在那个地方也没有表格。只是一个普通的按钮

所以,我必须在运行中创建,启动它,然后删除它

这是我的密码:

<button type='button' onclick='buttonClicked(); return false;' class='btn btn-primary btn-xs'>Export</button>
现在我的功能是:

var buttonClicked = function () {

    var content = getMyCsvData(); /// custom function to get CSV data

    if (window.navigator.msSaveOrOpenBlob) {
        alert('blob');
        var fileData = [content];
        blobObject = new Blob(fileData);
        window.navigator.msSaveOrOpenBlob(blobObject, "download_data");
    } else {
        var tempRef = $("<a download='' href='#'>download</a>");
        var url = "data:text/plain;charset=utf-8," + encodeURIComponent(content);
        $(tempRef).attr("href", url);
        this.element.append(tempRef);
        $(tempRef).click();
        this.element.remove(tempRef);
    }
这段代码对我来说听起来很奇怪,它不适用于使用href方法下载数据的Chrome

因此,问题:

是否有更好的方法将事件附加到按钮而不创建事件

如果没有,我如何创建我的锚,启动我的临时锚,然后删除它而不影响我的当前屏幕


感谢您的帮助。

您可以使用window.location导航到URL,包括数据:

window.location = 'data:....';
参见上的示例

但是,当类型可以在浏览器中显示时,这不会触发下载,而是将应用程序替换为下载,除非类型不能在浏览器中显示。您可以触发一个新窗口/选项卡,这可能是您想要的:

window.open('data:....', '_blank');
这将导致打开一个新选项卡,开始下载,一旦接受或拒绝,如果数据无法在浏览器中显示,该选项卡将关闭

请参阅CSV的工作示例

新开发人员尝试的一种不起作用的常见方法是尝试使用jQuery的.click命令触发对元素的单击。但是,虽然调用不带参数的click将触发jQuery注册的Javascript事件,但它不会触发内置的浏览器操作

以下是这种方法的一个例子,但它不起作用: