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