我正在尝试触发锚标记的click事件,并使用“download”属性强制下载具有特定名称的文件。
如何工作是用户单击一个将从表中提取数据的按钮,php将创建该文件并将URL发回给它。文件本身是一个随机生成的名称,因此我可以指定锚点的下载属性,因为我可以指定我希望用户看到的文件的名称。
我正在做的就是这样(简化)
PHP:
$content = $_POST['content'];
$url = "temp/extraction/" . getRandomString();
$fileName = $_SERVER['DOCUMENT_ROOT'] . "/the_page/" . $url;
$file = fopen($fileName, "w");
fputcsv($file, $content);
fclose($file);
echo $url;
我使用Jquery在Javascript中使用ajax的成功函数:
function(url){
//edited
var a = $('<a href="'+url+'" download="extraction.csv"></a>');
$('body').append(a);
a.click();
}
因此,如果我手动点击它可以完美地工作,但我不希望锚点可见(因此它不应该是可点击的)并且它只是暂时触发下载。
那么有没有办法完美模拟锚点击事件?我没有找到任何会触发下载并且没有打开新页面并使用我想要的文件名的内容。
我知道旧浏览器并不完全支持锚点的下载属性,但对我的用户群来说无关紧要,因为它适用于我的同事和老板,每个人都在使用最新的FF。